WaitForMultipleObjects , . , , WaitForMultipleObjects . .
WaitForMultipleObjects , , .
, , ( reset) , (.. ).
, , hEvent1 , hEvent2 .
, , ββ , - . - . :
UINT CMyClass::ThreadFunc()
{
HANDLE hEvents[2] = { m_hKillEvent, m_hWorkEvent };
while (true)
{
DWORD dwRet = WaitForMultipleObjects(2, hEvents, FALSE, INFINITE);
if (dwRet == WAIT_OBJECT_0)
{
break;
}
else if (dwRet == WAIT_OBJECT_0 + 1)
{
}
else
{
}
}
return 0;
}
, - SetEvent(m_hWorkEvent), , , SetEvent(m_hKillEvent), . - , , - :
// close worker thread
SetEvent(m_hKillEvent);
// wait for thread to die peacefully
DWORD dwRet = WaitForSingleObject(m_hWorkerThread, 5000);
if (dwRet == WAIT_TIMEOUT)
{
// worker failed to respond - error handling here
}
, m_hWorkEvent - , do some work here . , WaitForMultipleObjects kill , .
, :
HANDLE hEvents[2] = { m_hWorkEvent, m_hKillEvent };
m_hWorkEvent (, do some work here, reset, reset ), . .
. kill ( ), . , , .
, , , WaitForMultipleObjects "" , , - , :
if (WaitForSingleObject(hSomeEvent, 0) == WAIT_OBJECT_0)
{
}
kill .