WaitForMultipleObjects等待多个事件
WaitForMultipleObjects等待多个事件时,为什么总是有返回? 我认为应该是没有返回的,MSDN讲 bwaitall 如果为TRUE 则等待所有信号量有效在往下执行啊.
MFC代码:
HANDLE hDmmEvent[3];
...
OnInitDialog()
{
...
hDmmEvent[0]=CreateEvent(NULL,TRUE,FALSE,"1");
hDmmEvent[1]=CreateEvent(NULL,TRUE,FALSE,"1");
hDmmEvent[2]=CreateEvent(NULL,TRUE,FALSE,"1");
...
ResetEvent(hDmmEvent[0]);
ResetEvent(hDmmEvent[1]);
ResetEvent(hDmmEvent[2]);
...
}
UINT Thread1(LPVOID MM)
{
WaitForMultipleObjects(3,hDmmEvent,TRUE,INFINITE);
//WaitForSingleObject(hDmmEvent[0],INFINITE);
AfxMessageBox("Thread1");
return false;
}
UINT Thread2(LPVOID MM)
{
WaitForMultipleObjects(3,hDmmEvent,TRUE,INFINITE);
//WaitForSingleObject(hDmmEvent[1],INFINITE);
AfxMessageBox("Thread2");
return false;
}
void CTestDlg::OnOK()
{
// TODO: Add extra validation here
AfxBeginThread(Thread1,this);
AfxBeginThread(Thread2,this);
} WaitFor*Objects
[解决办法]
楼主,你好。根据你的代码:
hDmmEvent[0]=CreateEvent(NULL,TRUE,FALSE,"1");
hDmmEvent[1]=CreateEvent(NULL,TRUE,FALSE,"1");
hDmmEvent[2]=CreateEvent(NULL,TRUE,FALSE,"1");