使用事件物件實現執行緒同步

2021-06-29 17:00:36 字數 1003 閱讀 8016

事件物件屬於系統核心物件之一,在進行執行緒同步時,經常使用事件物件來是實現。事件物件分為兩類,其一是人工重置事件物件,其二自動重置事件物件。對於前者,可以同時有多個執行緒等待遇到事件物件,成為可排程執行緒。對於後者,等待該事件物件的多個執行緒只能有乙個執行緒成為可排程執行緒。此外,如果事件物件為自動重置事件物件,當某個執行緒等待到事件物件後,系統自動將事件物件設定為未通知狀態。這時只有使用函式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...