事件對象

事件對象屬於核心對象,它包含一個使用計數,一個用於標識該事件時一個自動重置還是一個人工重置的布爾值,和另一個用於指定該事件處於已通知狀態還是未通知狀態的布爾值。

基本介紹

  • 中文名:事件對象
  • 外文名:event object
  • 性質核心對象
  • 方法:有名的或匿名的事件對象
事件對象,方法,

事件對象

事件對象和互斥對象,一樣都屬於核心對象,它包含一個使用計數,一個用於標識該事件是一個自動重置還是一個人工重置的布爾值,和另一個用於指定該事件處於已通知狀態還是未通知狀態的布爾值。
由上面所述,可見事件對象可分為兩種,一種是人工重置的,另一種是自動重置的。當人工重置的事件得到通知時,等待該事件的所有執行緒均變為可調度執行緒。而當一個自動事件得到通知時,等待該事件的所有執行緒中只有一個執行緒變為可調度執行緒。

方法

,可以調用Windows API中的CreateEvent。它可以創建一個有名的或匿名的事件對象,函式原型如下HANDLE CreateEvent( LPSECURITY_ATTRIBUTESlpEventAttributes,
BOOLbManualReset,
BOOLbInitialState,
LPCTSTR lpName
);
第一參數lpEventAttributes是一個指向SECURITY_ATTRIBUTES結構指針,由它決定該函式返回的句柄是否能夠被子進程繼承,如果為NULL,則不能被繼承。通常指定為NULL(即默認的安全機制)。
第二參數bManualReset,若指定為TRUE,則創建一個人工重置的事件對象,此時可以利用函式
BOOL ResetEvent(HANDLE hEvent)人工重置其狀態為無信號的;若指定為FALSE,系統將創建一個自動重置對象,系統將自動將其狀態置為無信號的。
第三參數 bInitialState,若為TRUE則初始化創建的事件對象為有信號的(signaled),否則將創建的事件對象初始化為無信號的(nonsignaled)。
第四參數 lpName, 若指定為NULL,則創建一個匿名的事件對象。
返回值,如果函式成功,將返回一個該函式創建的事件對象的句柄。如果創建的事件對象是有名的,並且在調用該函式前,已經有一個同名的事件對象創建了,那么該函式將返回一個指向已存在的事件對象的句柄,並且調用GetLastError(void)函式時,將返回ERROR_ALREADY_EXISTS;如果函式調用失敗,那么它將返回NULL。

相關詞條

熱門詞條

聯絡我們