成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起聊聊信號量對象沒有所有者

開發(fā) 前端
如果線程在設(shè)法釋放信號量之前退出(或崩潰),則信號量計(jì)數(shù)器不會(huì)自動(dòng)還原。相較于互斥對象,如果所有者線程在持有互斥對象時(shí)終止,則釋放互斥對象。因此,對于這種使用模式,使用互斥對象更加合適一些。

相較于互斥對象(Mutex)和臨界區(qū)對象(Critical Section) ,信號量沒有所有者,它們只有計(jì)數(shù)。

ReleaseSemaphore 函數(shù)將會(huì)以指定的數(shù)量增加對應(yīng)信號量對象的計(jì)數(shù)。 (增加計(jì)數(shù)這個(gè)動(dòng)作,可能會(huì)釋放正在等待的線程)但是釋放信號量的線程不必與最初聲明它的線程相同。這與互斥對象和臨界區(qū)對象不同,后者要求聲明線程也是釋放線程。

有些人以類似互斥對象的方式使用信號量: 他們創(chuàng)建一個(gè)初始計(jì)數(shù)為 1 的信號量,并像這樣使用它,如下面代碼所示:

WaitForSingleObject(hSemaphore, INFINITE);
… do stuff ..
ReleaseSemaphore(hSemaphore, 1, NULL);

如果線程在設(shè)法釋放信號量之前退出(或崩潰),則信號量計(jì)數(shù)器不會(huì)自動(dòng)還原。相較于互斥對象,如果所有者線程在持有互斥對象時(shí)終止,則釋放互斥對象。因此,對于這種使用模式,使用互斥對象更加合適一些。

如果資源的概念所有權(quán)可以跨線程,則信號量非常有用。我們來看下圖:

此技巧不適用于互斥對象或臨界區(qū)對象,因?yàn)榛コ鈱ο蠛团R界區(qū)對象具有所有者,并且只有所有者才能釋放互斥對象或臨界區(qū)對象。

請注意,如果 KeepWorking 函數(shù)退出并忘記釋放信號量,則計(jì)數(shù)器不會(huì)自動(dòng)恢復(fù)。操作系統(tǒng)不知道信號量”屬于”該工作項(xiàng)。

信號量的另一種常見用法模式與資源保護(hù)模式相反:它是資源生成模式。在此模型中,信號量計(jì)數(shù)通常為零,但在有工作要完成時(shí)遞增。

請注意,在這種情況下,甚至沒有信號量的概念”所有者”,除非你將工作項(xiàng)本身(位于工作列表數(shù)據(jù)結(jié)構(gòu)上的某處)視為所有者。如果 ProcessWork 線程退出,則不希望自動(dòng)釋放信號量,那會(huì)破壞掉內(nèi)部計(jì)數(shù)。在這種情況下,信號量是合適的對象。

(生產(chǎn)者/使用者信號量的更高性能版本是 I/O 完成端口。)

總結(jié)

既然提到了所謂的高性能版本,我想原作者所表達(dá)的意思是:對于爾等 C++ 工人來說,平常使用無妨,但是如果是性能攸關(guān)的代碼,頻繁地切換內(nèi)核上下文所帶來的性能開銷,不可小視。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-05-30 07:52:38

信號量版本C++

2021-08-27 07:06:10

IOJava抽象

2024-02-20 21:34:16

循環(huán)GolangGo

2020-11-05 09:59:24

Linux內(nèi)核信號量

2024-06-12 09:52:00

2023-08-04 08:20:56

DockerfileDocker工具

2022-05-24 08:21:16

數(shù)據(jù)安全API

2023-09-10 21:42:31

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2025-03-05 08:02:45

2022-11-12 12:33:38

CSS預(yù)處理器Sass

2024-02-26 00:00:00

Go性能工具

2023-12-28 09:55:08

隊(duì)列數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)

2022-01-04 12:08:46

設(shè)計(jì)接口

2023-07-27 07:46:51

SAFe團(tuán)隊(duì)測試

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2022-06-26 09:40:55

Django框架服務(wù)

2022-10-28 07:27:17

Netty異步Future

2022-07-29 08:17:46

Java對象內(nèi)存
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 视频一区二区在线观看 | av在线免费观看网址 | 免费观看成人鲁鲁鲁鲁鲁视频 | 亚洲小视频在线播放 | 国内久久 | 国产一区二区免费 | 成人精品视频在线观看 | 在线播放亚洲 | 视频一区中文字幕 | 中文字幕亚洲一区二区三区 | 天天操天天摸天天爽 | 在线观看国产wwwa级羞羞视频 | 国产精品久久国产精品 | 99国产精品久久久久久久 | 国产精品视频综合 | 成人一区二 | 亚洲精品无| 欧美美乳| 欧洲性生活视频 | av一区二区三区四区 | 国产午夜在线观看 | 亚洲成人高清 | 欧美黄色大片在线观看 | 免费一二区 | a中文在线视频 | 中文字幕第7页 | 精品产国自在拍 | 一区二区三区成人 | 美女福利视频 | 久草网址 | 国产粉嫩尤物极品99综合精品 | 精品日韩 | 欧美日韩在线不卡 | 国产在线观看免费 | 久久久久国产精品人 | 国产精品久久久久久妇女6080 | 九九热精品在线 | 最新国产精品精品视频 | 高清视频一区二区三区 | 国产在线视频三区 | 99精品国自产在线 |