15,473
社区成员




HEVENT __hEvent__ = ::CreateEvent(NULL, TRUE, FALSE, NULL) //手动重置,初始无信号
CRITICAL_SECTION __cs__={0}; //用于控制工作线程间互斥
InitializeCriticalSection(&__cs__);
BOOL bFlag = FALSE; //工作线程是否已处理过
DWORD WINAPI WorkerProc(LPVOID lParam)
{
if(!bFlag)
{
::WaitForSingleObject(__hEvent__ ,INFINITE); //当有新数据插入时手动置为有信号,bFlag = FALSE;
do
{
if(bFlag) //双重检测
{
::EnterCriticalSection(&__cs__);
//...........
//...........
::LeaveCriticalSection(&__cs__);
bFlag = TRUE;
}
}while(0);
//ResetEvent(__hEvent__ );
}
return 0;
}
::CloseHandle(__hEvent__ );
::DeleteCriticalSection(&__cs__);