ResetEvent

ResetEvent
编辑

ResetEvent
这个函数把指定的 事件对象设置为无信号状态。
BOOL ResetEvent(
HANDLE hEvent
);
参数说明:
hEvent
[in] 指向 事件对象的句柄.由 CreateEvent or  OpenEvent 函数返回。 这个句柄需要拥有EVENT_MODIFY_STATE 访问权限.
函数成功,返回非0值,否则返回0值,可以调用GetLastError得到错误的详细信息。
Remarks
一个 事件对象一直都保持在无信号状态,直到显式调用 SetEvent or PulseEvent 函数把它设置到有信号状态。 这些无信号的 事件对象会阻塞任何在内部调用wait函数的线程。
这个函数用于手动重置的 事件对象。手动重置的对象在 线程释放后必须手动置为无信号状态。 自动重置的 事件对象在一个等待它成功的线程释放后会自动变为无信号状态。
重置一个无信号的 事件对象没有任何效果。
示例:
//前面我们先申请一个CEvent对象
...
CEvent m_Event(FASLE , FALSE) ;
...
//第一个线程
DWORD WINAPI EventThreadFirst(LPVOID pParam)
{
for(int i(0) ; i != 5 ; i++)
{
WaitForSingleObject(m_Event.m_hObject , INFINITE) ;
cout << i*11+6 <<endl ;
}
return 0 ;
}
//第二个线程
DWORD WINAPI EventThreadSecond(LPVOID pParam)
{
for(int i(0) ; i != 5 ; i++)
{
m_Event.ResetEvent() ;
cout << i*5+2 <<" + "<< i*6+4 << " = ?" <<endl ;
cout << "让我想想..." << endl ;
Sleep(3000) ;
m_Event.SetEvent() ;
}
}

你可能感兴趣的:(ResetEvent)