久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

c++信號量Semaphore

 xihayouyi 2011-07-04
C++信號量Semaphore和MFC中的CSemaphore類使用【轉(zhuǎn)】
使用信號量內(nèi)核對象進(jìn)行線程同步主要會用到CreateSemaphore(),、OpenSemaphore()、 ReleaseSemaphore()、WaitForSingleObject()和WaitForMultipleObjects()等函數(shù),。其 中,CreateSemaphore()用來創(chuàng)建一個信號量內(nèi)核對象,,其函數(shù)原型為:
HANDLE CreateSemaphore(
LPSECURITY_ATTRIBUTES lpSemaphoreAttributes, // 安全屬性指針
LONG lInitialCount, // 初始計(jì)數(shù)
LONG lMaximumCount, // 最大計(jì)數(shù)
LPCTSTR lpName // 對象名指針
);

參數(shù)lMaximumCount是一個有符號32位值,,定義了允許的最大資源計(jì)數(shù),最大取值不能超過4294967295,。lpName參數(shù)可以為創(chuàng)建的 信號量定義一個名字,,由于其創(chuàng)建的是一個內(nèi)核對象,因此在其他進(jìn)程中可以通過該名字而得到此信號量,。

OpenSemaphore()函數(shù)即可用來根據(jù)信號 量名打開在其他進(jìn)程中創(chuàng)建的信號量,,函數(shù)原型如下:
HANDLE OpenSemaphore(
DWORD dwDesiredAccess, // 訪問標(biāo)志
BOOL bInheritHandle, // 繼承標(biāo)志
LPCTSTR lpName // 信號量名
);
在線程離開對共享資源的處理時,必須通過ReleaseSemaphore()來增加當(dāng)前可用資源計(jì)數(shù),。否則將會出現(xiàn)當(dāng)前正在處理共享資源的實(shí)際線程數(shù)并 沒有達(dá)到要限制的數(shù)值,,而其他線程卻因?yàn)楫?dāng)前可用資源計(jì)數(shù)為0而仍無法進(jìn)入的情況。

ReleaseSemaphore()的函數(shù)原型為:
BOOL ReleaseSemaphore(
HANDLE hSemaphore, // 信號量句柄
LONG lReleaseCount, // 計(jì)數(shù)遞增數(shù)量
LPLONG lpPreviousCount // 先前計(jì)數(shù)
);
該函數(shù)將lReleaseCount中的值添加給信號量的當(dāng)前資源計(jì)數(shù),,一般將lReleaseCount設(shè)置為1,,如果需要也可以設(shè)置其他的值。

WaitForSingleObject()和WaitForMultipleObjects()主要用在試圖進(jìn)入共享資源的線程函數(shù)入口處,,主要用來判 斷信號量的當(dāng)前可用資源計(jì)數(shù)是否允許本線程的進(jìn)入,。只有在當(dāng)前可用資源計(jì)數(shù)值大于0時,被監(jiān)視的信號量內(nèi)核對象才會得到通知,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多