一、事件是很常用的多線程同步互斥機制
函數原型如下所示,一共四個參數:
HANDLE CreateEvent(
LPSECURITY_ATTRIBUTES lpEventAttributes, // SECURITY_ATTRIBUTES結構指針,可為NULL BOOL bManualReset, // 手動/自動 // TRUE:表示手動,在WaitForSingleObject后必須手動調用ResetEvent清除信號 // FALSE:表示自動,在WaitForSingleObject后,系統自動清除事件信號 BOOL bInitialState, //初始狀態,FALSE為無信號,TRUE為有信號 LPCTSTR lpName //事件的名稱 );
二、下面是使用演示:
1、首先在要使用時間的類中聲明這個事件的句柄,用來標識這個事件,如下所示:
2、聲明好了句柄,就要調用CreateEvent()函數創建事件了,如下所示:
3、設置信號的初始狀態,使用SetEvent()(激活狀態)或者ResetEvent()(未激活狀態),依據使用設置,這里是Set如下所示:
4、在函數中檢測事件的狀態,如下所示在循環中檢測事件的狀態,如果事件未被激活,循環將會被掛起在這里,不會往下執行,除非在別處調用了SetEvent()或者ResetEvent(),這里是事件被激活之后才會往下執行:
5、執行完成之后調用ResetEvent()將事件狀態還原(如果創建事件的時候是手動設置的話)。
from:http://blog.csdn.net/meloyi/article/details/50394735
新聞熱點
疑難解答
圖片精選