国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
CEvent類及常用函數(shù)

CEvent

CEvent類的一個對象,表示一個事件”---- 一個允許一個事件發(fā)生時線程通知另一個線程的同步對象。在一個線程需要了解何時執(zhí)行任務(wù)時,事件是十分有用的。例如,拷貝數(shù)據(jù)到數(shù)據(jù)文檔時,線程應(yīng)被通知何時數(shù)據(jù)是可用的。當(dāng)新數(shù)據(jù)可用時,通過運用CEvent對象來通知拷貝線程,線程才可能盡快地執(zhí)行。

CEvent對象有兩種類型:自動和手工。一個手工CEvent對象存在于由ResetEvent SetEvent設(shè)置的狀態(tài)中,直到另一個函數(shù)被調(diào)用。一個自動CEvent對象在至少一個線程被釋放后自動返回一個無標(biāo)記(無用的)狀態(tài)。

1.   CreateEvent()用于創(chuàng)建或打開一個命名的或無名的事件對象。函數(shù)原型是:

       HANDLE CreateEvent(

  LPSECURITY_ATTRIBUTESlpEventAttributes, // 安全屬性

  BOOL bManualReset,// 復(fù)位方式

  BOOL bInitialState,// 初始狀態(tài) TRUE or FALSE

  LPCTSTR lpName // 對象名稱

  );

 

2.    ResetEvent():這個函數(shù)把指定的事件對象設(shè)置為無信號狀態(tài)。函數(shù)原型是:

  BOOL ResetEvent(

  HANDLE hEvent

  );

參數(shù)說明:

  hEvent

  [in] 指向事件對象的句柄. CreateEvent or OpenEvent 函數(shù)返回。 這個句柄需要擁有EVENT_MODIFY_STATE訪問權(quán)限.

  函數(shù)成功,返回非0值,否則返回0值,可以調(diào)用GetLastError得到錯誤的詳細(xì)信息。

  Remarks

  一個事件對象一直都保持在無信號狀態(tài),直到顯式調(diào)用 SetEvent or PulseEvent 函數(shù)把它設(shè)置到有信號狀態(tài)。 這些無信號的事件對象會阻塞任何在內(nèi)部調(diào)用wait函數(shù)的線程。

  這個函數(shù)用于手動重置的事件對象。手動重置的對象在線程釋放后必須手動置為無信號狀態(tài)。 自動重置的事件對象在一個等待它成功的線程釋放后會自動變?yōu)闊o信號狀態(tài)。

  重置一個無信號的事件對象沒有任何效果。

 

3.    WaitForSingleObject():用來檢測hHandle事件的信號狀態(tài)。函數(shù)原型是:

  DWORDWaitForSingleObject(

  HANDLE hHandle,

  DWORDdwMilliseconds

  );

  參數(shù)hHandle是一個事件的句柄,第二個參數(shù)dwMilliseconds是時間間隔。如果時間是有信號狀態(tài)返回WAIT_OBJECT_0,如果時間超過dwMilliseconds值但時間事件還是無信號狀態(tài)則返回WAIT_TIMEOUT。

4.    CloseHandle():關(guān)閉一個內(nèi)核對象。其中包括文件、文件映射、進程、線程、安全和同步對象等。在CreateThread成功之后會返回一個hThreadhandle,且內(nèi)核對象的計數(shù)加1CloseHandle之后,引用計數(shù)減1,當(dāng)變?yōu)?/span>0時,系統(tǒng)刪除內(nèi)核對象。函數(shù)原型為:

BOOL CloseHandle(

  HANDLE hObject

  );

  參數(shù)

  hObject :代表一個已打開對象handle。

  返回值

  TRUE:執(zhí)行成功;

  FALSE:執(zhí)行失敗,可以調(diào)用GetLastError()獲知失敗原因。

 

其他:

一個Event被創(chuàng)建以后,可以用OpenEvent()API來獲得它的Handle,用CloseHandle()  來關(guān)閉它,用SetEvent()PulseEvent()來設(shè)置它使其有信號,用ResetEvent()來使其無信號,用WaitForSingleObject()WaitForMultipleObjects()來等待其變?yōu)橛行盘枴?/span>

PulseEvent()是一個比較有意思的使用方法,正如這個API的名字,它使一個Event 對象的狀態(tài)發(fā)生一次脈沖變化,從無信號變成有信號再變成無信號,而整個操作是原子的。

以上都是我總結(jié)的,參考百度百科。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
線程的使用
CEvent類祥解
[轉(zhuǎn)載]WinCE 進程、線程和內(nèi)存管理之同步 .
windows 事件
Win32多線程編程 總結(jié)
c++多線程同步使用的對象
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服