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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第九章 线程与内核对象的同步(6)

發(fā)布時間:2025/5/22 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第九章 线程与内核对象的同步(6) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

六、其他的線程同步函數(shù)

1、異步設(shè)備I/O

異步設(shè)備I/O使得線程能夠啟動一個讀操作或?qū)懖僮?#xff0c;但是不必等待讀操作或?qū)懖僮魍瓿伞TO(shè)備對象是可以同步的內(nèi)核對象,可以調(diào)用WaitForSingleObject函數(shù)傳遞文件、套接字和通信端口的句柄。當(dāng)系統(tǒng)執(zhí)行異步I/O時,設(shè)備對象處于未通知狀態(tài)。一旦操作完成,系統(tǒng)就將對象的狀態(tài)改為已通知狀態(tài),該線程就知道操作已經(jīng)完成。線程就可以繼續(xù)運行。

2DWORD WaitForInputIdle(HANDLE hProcess, DWORD dwMilliseconds)

使線程一直等待,直到hProcess標(biāo)識的進(jìn)程在創(chuàng)建應(yīng)用程序的第一個窗口的線程中已經(jīng)沒有尚未處理的輸入為止。用于父進(jìn)程創(chuàng)建子進(jìn)程,父進(jìn)程的線程想要知道子進(jìn)程何時完成初始化,唯一的辦法是等待,直到子進(jìn)程不再處理任何輸入為止。

3MsgWaitForMultipleObjects

DWORD MsgWaitForMultipleObjects(DWORD dwCount, PHANDLE phObjects,BOOL fWaitAll,

DWORD dwMilliseconds, DWORD dwWakeMask);

DWORD MsgWaitForMultipleObjectsEx(DWORD dwCount, PHANDLE phObjects,

DWORD dwMilliseconds, DWORD dwWakeMask, DWORD dwFlags);

主要區(qū)別在于前者允許線程在內(nèi)核對象變成已通知狀態(tài)或窗口消息需要調(diào)度到調(diào)用線程創(chuàng)建的窗口中時被調(diào)度。創(chuàng)建窗口和執(zhí)行與用戶界面相關(guān)的任務(wù)的線程應(yīng)調(diào)MsgWaitForMultipleObjectsEx函數(shù),而不該調(diào)用MsgWaitForMultipleObjects函數(shù),因為后面這個函數(shù)將使線程的用戶界面無法對用戶作出響應(yīng)。

  • WaitForDebugEvent
  • Wi n d o w s將調(diào)試支持特性內(nèi)置于操作系統(tǒng)之中。當(dāng)調(diào)試程序啟動運行時,它將自己附加給一個被調(diào)試程序。該調(diào)試程序只需閑置著,等待操作系統(tǒng)將與被調(diào)試程序相關(guān)的調(diào)試事件通知它。調(diào)試程序通過調(diào)用WaitForDebugEvent函數(shù)來等待這些事件的發(fā)生:

    BOOL WaitForDebugEvent(PDEBUG_EVENT pde,DWORD dwMilliseconds);

    當(dāng)調(diào)試程序調(diào)用該函數(shù)時,調(diào)試程序的線程終止運行,系統(tǒng)將調(diào)試事件已經(jīng)發(fā)生的情況通知調(diào)試程序,方法是允許調(diào)用的WaitForDebugEvent函數(shù)返回。p d e參數(shù)指向的結(jié)構(gòu)在喚醒調(diào)試程序的線程之前由系統(tǒng)填入信息。該結(jié)構(gòu)包含了關(guān)于剛剛發(fā)生的調(diào)試事件的信息。

  • SingleObjectAndWait
  • 用于在單個原子方式的操作中發(fā)出關(guān)于內(nèi)核對象的通知并等待另一個內(nèi)核對象。

    DWORD SingleObjectAndWait( HANDLE hObjectToSignal, HANDLE hObjectToWaitOn,

    DWORD dwMilliseconds, BOOL fAlertable);

    hObjectToSignal參數(shù)必須標(biāo)識一個互斥對象、信標(biāo)對象或事件。hObjectToWaitOn參數(shù)用于標(biāo)識下列任何一個內(nèi)核對象:互斥對象、信標(biāo)、事件、定時器、進(jìn)程、線程、作業(yè)、控制臺輸入和修改通知。dwMilliseconds參數(shù)指明該函數(shù)為了等待該對象變?yōu)橐淹ㄖ獱顟B(tài),應(yīng)該等待多長時間,而fAlertable標(biāo)志則指明線程等待時該線程是否應(yīng)該能夠處理任何已經(jīng)排隊的異步過程調(diào)用。

    總結(jié)

    以上是生活随笔為你收集整理的第九章 线程与内核对象的同步(6)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。