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

2021-04-13 07:15:03 字數 936 閱讀 2529

事件物件也屬於核心物件,包含乙個使用計數,乙個用於指明該事件是乙個自動重置事件還是人工重置事件的bool值,另乙個用於指明該事件處於已通知狀態(有訊號狀態)還是未通知狀態(無訊號狀態)的bool值,當人工重置的事件得到通知時,等待該事件的所有執行緒均變為可排程執行緒,需要用resetevent函式設定其事件狀態,且waitforsingleobject不能設定該事件物件的狀態。當乙個自動重置的事件得到通知時,等待該事件的執行緒中只有乙個執行緒變為可排程執行緒,waitforsingleobject將自動設定該事件物件的狀態。

bmanualreset

[in] specifies whether a manual-reset or auto-reset event object is created. if true, then you must use the resetevent function to

manually reset the state to nonsignaled. if false, the system automatically resets the state to nonsignaled

after a single waiting thread has been released.

#include

#include

dword winapi func1proc(lpvoid lpparameter);

dword winapi func2proc(lpvoid lpparameter);

int tickets = 100;

handle g_hevent;

int main()

dword winapi func1proc(lpvoid lpparameter)

else

setevent(g_hevent);

}return 0;

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

事件物件屬於系統核心物件之一,在進行執行緒同步時,經常使用事件物件來是實現。事件物件分為兩類,其一是人工重置事件物件,其二自動重置事件物件。對於前者,可以同時有多個執行緒等待遇到事件物件,成為可排程執行緒。對於後者,等待該事件物件的多個執行緒只能有乙個執行緒成為可排程執行緒。此外,如果事件物件為自動...

執行緒同步 核心物件實現執行緒同步 事件核心物件

1 事件核心物件23 事件型別物件有兩種不同型別,手動重置和自動重置 4手動重置 當乙個手動重置物件被觸發時候,等待該物件的所有執行緒變為可排程。5自動重置 當乙個自動重置物件被觸發時,只有乙個等待該事件的執行緒會變為可排程67 下面是乙個建立事件核心物件的函式 8handle createeven...

利用互斥物件實現執行緒同步

程式是計算機指令的集合,它以檔案的形式儲存在磁碟上。而程序通常被定義為乙個正在執行的程式的例項,是乙個程式在其自身的位址空間中的一次執行活動 程序從來不執行任何東西,真正完成 執行的是執行緒,而程序只是執行緒的容器,或者說是執行緒的執行環境 當建立乙個程序時,作業系統會自動建立這個程序的第乙個執行緒...