SetEvent的问题
HANDLE g_hEvent
HANDLE g_refreshthread
DWORD WINAPI refreshsearch()
{
DWORD dwWaitRet = 0;
Sleep(5000) //确保可以Wait到event
dwWaitRet = WaitForSingleObject(g_hEvent,100);
if(dwWaitRet == WAIT_OBJECT_0)
{
ResetEvent(g_hEvent); //
return 0;
}
}
void main()
{
DWORD ret = 0;
char tmp[10];
g_hEvent = CreateEvent(0,TRUE,FALSE,"killrefresh");
g_refreshthread = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)refreshsearch,(LPVOID)NULL,
0,&ThreadID); //*/
SetEvent(g_hEvent);
Sleep(15000);
ret = WaitForSingleObject(g_hEvent,500);
}
如果 子线程
if(dwWaitRet == WAIT_OBJECT_0)
{
SetEvent(g_hEvent); //RestEvent改为SetEvent
return 0;
}
这样
那么主线程执行到以下的时候:
ret = WaitForSingleObject(g_hEvent,500);
返回0。
问题是主线程已经SetEvent了,子线程在WaitForSingleObject的成功,并没有把g_Event进行Reset,怎么可以对它再次SetEvent呢