事件物件屬於系統核心物件之一,在進行執行緒同步時,經常使用事件物件來是實現。事件物件分為兩類,其一是人工重置事件物件,其二自動重置事件物件。對於前者,可以同時有多個執行緒等待遇到事件物件,成為可排程執行緒。對於後者,等待該事件物件的多個執行緒只能有乙個執行緒成為可排程執行緒。此外,如果事件物件為自動重置事件物件,當某個執行緒等待到事件物件後,系統自動將事件物件設定為未通知狀態。這時只有使用函式setevent()將事件物件設定為通知狀態。
1、createevent
該函式用於建立乙個事件物件。
handle createevent(lpsecurity_attributes lpeventattributes,bool bmanualreset,bool binitialstate,lpctstr);
lpeventattributes:事件物件的安全屬性
bmanualreset:事件物件的型別。為true,表示建立人工重置事件物件;為false表示建立自動重置事件物件。
binitialstate:事件物件的初始通知狀態。為true,表示通知狀態。
lpname:事件物件的名稱。
2、bool setevent(handle hevent);
該函式用於將事件設定為通知狀態
3、bool resetevent(handle hevent);
該函式用於將事件物件設定為未通知狀態。
#include "stdafx.h"
#include "windows.h"
int number = 1;
handle hevent;
unsigned long __stdcall threadproc1(void* lpparameter)
return 0;
}unsigned long __stdcall threadproc2(void* lpparameter)
return 0;
}int main(int argc, char* argv)
return 0;
}
利用事件物件實現執行緒同步
事件物件也屬於核心物件,包含乙個使用計數,乙個用於指明該事件是乙個自動重置事件還是人工重置事件的bool值,另乙個用於指明該事件處於已通知狀態 有訊號狀態 還是未通知狀態 無訊號狀態 的bool值,當人工重置的事件得到通知時,等待該事件的所有執行緒均變為可排程執行緒,需要用resetevent函式設...
執行緒同步 核心物件實現執行緒同步 事件核心物件
1 事件核心物件23 事件型別物件有兩種不同型別,手動重置和自動重置 4手動重置 當乙個手動重置物件被觸發時候,等待該物件的所有執行緒變為可排程。5自動重置 當乙個自動重置物件被觸發時,只有乙個等待該事件的執行緒會變為可排程67 下面是乙個建立事件核心物件的函式 8handle createeven...
執行緒同步之事件物件
執行緒同步 讓執行緒協同步調,按照一定的先後次序來執行 當人工重置的事件得到通知時,等待該事件的所有執行緒均變為可排程執行緒。當乙個自動重置的事件得到通知時,等待該事件的執行緒中只有乙個執行緒變為可排程執行緒。參考 多執行緒與事件物件 多執行緒程式設計 13 多執行緒同步之 event 事件物件 i...