日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows中多线程同步之事件(Event)

發布時間:2025/3/15 windows 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows中多线程同步之事件(Event) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

可用事件來當做同步的依據,需使用以下函數

CreatEvent():創建一個事件對象

SetEvent():把指定事件對象的狀態設置為發信號狀態

ResetEvent():把指定事件對象的狀態設置為不發信號狀態

使用機制:

和事件有關的函數有:

HANDLE CreateEvent(LPSECURITY_ATTRIBUTES lpEventAttributes,BOOL bManualReset,BOOL bInitialState,
LPTSTR lpName);
BOOL SetEvent(HANDLE hEvent);
BOOL PulseEvent(HANDLE hEvent);
BOOL ResetEvent(HANDLE hEvent);
HANDLE OpenEvent(DWORD dwDesiredAccess, BOOL bInheritHandle, LPCTSTR lpName );
事件對象是最常用的內核模式同步方法。它包含一個使用計數和兩個BOOL變量。其中一個BOOL變量指定這個事件對象是自動重
置還是手工重置。另一個BOOL變量指定當前事件對象處于有信號狀態還是無信號狀態。
 
 函數CreateEvent創建一個事件對象,參數1必須為NULL,參數2指定是否手工重新設置事件對象的狀態。如果為FALSE,
當等待函數接到信號并返回后此事件對象被自動置為無信號狀態。這時等待此事件對象的其它線程就不會被喚醒,因為事件對象
已經被置為無信號狀態。如果參數2設置為TRUE,當等待函數接到信號并返回后事件對象不會被自動置于無信號狀態,其它等待
此事件對象的線程都能夠被喚醒。用ResetEvent函數可以手工將事件對象置為無信號狀態。相反SetEvent函數將事件對象置為
有信號狀態。PulseEvent函數將事件對象置為有信號狀態,然后立即置為無信號狀態,在實際開發中這個函數很少使用。
OpenEvent函數打開已經創建的事件對象,一般用于不同進程內的線程同步。在調用CreateEvent創建一個事件對象時,
傳遞一個名字給參數4,這樣在其它進程中的線程就可以調用OpenEvent函數并指定事件對象的名字,來訪問這個事件對象。事件
一般都用在線程里,當作信號燈。

?

總結

以上是生活随笔為你收集整理的Windows中多线程同步之事件(Event)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。