WaitForSingleObject
即使已发出事件信号,有时也会等待超时。
SetEvent()
信令线程每次都收到成功。但是,发出信号的线程并不总是能听到信号。如果我向信号线程添加冗余SetEvent()
,问题就会消失。
显然这里有些不对劲。可能的原因是什么?
// Signalling Thread
if (SetEvent(waitEvent))
consoleprintf(L"\r\nEvent Set.");
并且应该等待延迟时间或收到信号。但并不总是得到信号。
waitEvent = CreateEvent(
NULL, // default security attributes
FALSE, // auto-reset event
FALSE, // initial state is nonsignaled
TEXT("WaitEvent") // object name
);
for(;;)
{
dwWaitResult = WaitForSingleObject(waitEvent, // event handle
5000);
switch (dwWaitResult)
{
// Event object was signaled
case WAIT_OBJECT_0:
consoleprintf(L"\r\nSuccess.");
break;
case WAIT_FAILED:
//break;
case WAIT_ABANDONED:
consoleprintf(L"\r\nWait failed.");
break;
case WAIT_TIMEOUT:
consoleprintf(L"\r\nWait Timed out: %d", waitTime);
break;
default:
break;
}
}