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() ;
}
}
環境需求:
Client Requires Windows XP, Windows 2000 Professional, Windows NT Workstation, Windows Me, Windows 98, or Windows 95.
Server Requires Windows Server 2003, Windows 2000 Server, or Windows NT Server.
Header Declared in Winbase.h; include Windows.h.
Library Link to Kernel32.lib.
DLL Requires Kernel32.dll.
See Also