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

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Windows核心編程(第五版)筆記 第九章 利用內(nèi)核對(duì)象同步線程(Thread Sync...

第九章 利用內(nèi)核對(duì)象同步線程

內(nèi)核對(duì)象可用于不同進(jìn)程間線程的同步。

1.Wait系列函數(shù)

WaitForSingleObject

       掛起當(dāng)前線程,直到該函數(shù)返回。(被等待的對(duì)象處于Signal狀態(tài)或等待超時(shí))

       若有多個(gè)線程調(diào)用該函數(shù)等待同一個(gè)內(nèi)核對(duì)象,那么當(dāng)這個(gè)內(nèi)核對(duì)象處于Signal狀態(tài)時(shí)只有一個(gè)線程會(huì)被喚醒。

       若線程中有創(chuàng)建Windows的代碼,需要用MsgWaitForMultipleObjects代替WaitForSingleObject,否則會(huì)產(chǎn)生死鎖。

 

WaitForMultipleObjects

若需要同時(shí)等待多個(gè)內(nèi)核對(duì)象,則可以調(diào)用該函數(shù)

 

2.事件內(nèi)核對(duì)象

 

自動(dòng)事件

當(dāng)事件處于Signal狀態(tài)時(shí),只有一個(gè)等待該事件的線程會(huì)被喚醒。            之后事件會(huì)被自動(dòng)回到Non Signal狀態(tài)。

手動(dòng)事件

當(dāng)事件處于Signal狀態(tài)時(shí),所有等待該事件的線程都會(huì)被喚醒。                之后需要調(diào)用ResetEventEvent對(duì)象調(diào)回到Non Signal狀態(tài)。

3.信號(hào)量對(duì)象

信號(hào)量可以控制可以運(yùn)行的線程的數(shù)量。

在創(chuàng)建信號(hào)量對(duì)象時(shí)要用一個(gè)初值來(lái)初始化lMaximumCount(允許運(yùn)行線程數(shù)目的最大值),并把lInitialCount的值賦給CurrentSource

信號(hào)量?jī)?nèi)部用CurrentSource來(lái)記錄當(dāng)前可運(yùn)行線程的數(shù)量,

                    當(dāng)CurrentSource大于0時(shí),信號(hào)量處于Signal狀態(tài)。

                    當(dāng)CurrentSource=0時(shí),信號(hào)量處于Non Signal狀態(tài)。

 

WaitForSingleObject會(huì)使CurrentSource減1, ReleaseSemaphore會(huì)使CurrentSource+1.

 

4.互斥鎖

WAIT_ABANDONED

Windows中使用互斥鎖可以有效的避免死鎖。

當(dāng)持有Mutex的線程在調(diào)用ReleaseMutex前意外退出,如ExitThreadTerminateThread。系統(tǒng)會(huì)把Mutex分給等待Mutex的線程中的一個(gè)并返回Wait_Abandoned,從而避免了死鎖。

 

5.       其它同步方法

Asynchronous Device I/O

WaitForInputIdle

MsgWaitForMultipleObjects(Ex)

WaitForDebugEvent

SignalObjectAndWait

Detecting Deadlocks with the Wait Chain Traversal API

 

6.Common API:

  WaitForSingleObject  WaitForMultipleObjects

  MsgWaitForMultipleObjects

  CreateEvent CreateEventEx SetEvent ResetEvent OpenEvent

  CreateSemaphore OpenSemaphore

  CreateMutex OpenMutex ReleaseMutex

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
線程、線程句柄、線程ID
WaitForSingleObjet
WaitForSingleObject函數(shù)的使用
C語(yǔ)言實(shí)現(xiàn)簡(jiǎn)易聊天室
Visual C++線程同步技術(shù)剖析
多線程中的 WaitForSingleObject 與 EnterCriticalSection 性能比較
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服