国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 操作系統(tǒng) > 正文

多線程同步機(jī)制的幾種方法

2024-06-28 13:20:14
字體:
供稿:網(wǎng)友
多線程同步機(jī)制的幾種方法

Critical SectionCritical section(臨界區(qū))用來實(shí)現(xiàn)“排他性占有”。適用范圍是單一進(jìn)程的各線程之間。它是:一個(gè)局部性對(duì)象,不是一個(gè)核心對(duì)象。快速而有效率。不能夠同時(shí)有一個(gè)以上的 critical section 被等待。無法偵測(cè)是否已被某個(gè)線程放棄。

可以實(shí)現(xiàn)線程間互斥,不能用來實(shí)現(xiàn)同步。

SemaphoreSemaphore 被用來追蹤有限的資源。它是:一個(gè)核心對(duì)象。

沒有擁有者。

可以具名,因此可以被其他進(jìn)程開啟。可以被任何一個(gè)線程釋放(released)。

既能實(shí)現(xiàn)線程間互斥,也能實(shí)現(xiàn)線程間同步。

在跨進(jìn)程中使用時(shí),如果擁有信號(hào)量的線程意外結(jié)束,其它進(jìn)程不會(huì)收到通知。

MutexMutex 是一個(gè)核心對(duì)象,可以在不同的線程之間實(shí)現(xiàn)“排他性占有”,甚至即使那些線程分屬不同進(jìn)程。它是:一個(gè)核心對(duì)象。如果擁有 mutex 的那個(gè)線程結(jié)束,則會(huì)產(chǎn)生一個(gè) “abandoned” 錯(cuò)誤信息。i可以具名,因此可以被其他進(jìn)程開啟。只能被擁有它的那個(gè)線程釋放(released)。

在跨進(jìn)程中使用時(shí),如果擁有互斥器的進(jìn)程意外結(jié)束,其它進(jìn)程會(huì)收到一個(gè)WAIT_ABANDOEND消息。

EventEvent object 通常使用于 overlapped I/O,或用來設(shè)計(jì)某些自定義的同步對(duì)象。它是:一個(gè)核心對(duì)象。可是用來實(shí)現(xiàn)線程的互斥與同步。可以具名,因此可以被其他進(jìn)程開啟。

在跨進(jìn)程中使用時(shí),如果擁有信號(hào)量的線程意外結(jié)束,其它進(jìn)程也不會(huì)受到通知。

注意:臨界區(qū)和互斥器都有“線程所有權(quán)”的概念,所以它們是不能用來實(shí)現(xiàn)線程間的同步的,只能用來實(shí)現(xiàn)互斥。原因是由于創(chuàng)建臨界區(qū)或互斥器的線程可以不用等待LeaveCriticalSection(),SetEvent()就可以無條件進(jìn)入保護(hù)的程序段,因?yàn)樗鼡碛羞@個(gè)權(quán)利。另外,互斥器可以很好的處理”遺棄“操作。若線程在未釋放對(duì)向象的時(shí)候就意外終止的,其它線程可以等待到一個(gè)WAIT_ABANDONED_0。但是事件和信號(hào)量都不能做到。

事件和信號(hào)量都可以實(shí)現(xiàn)線程和進(jìn)程間的互斥和同步。

就使用效率來說,臨界區(qū)的效率是最高的,因?yàn)樗皇莾?nèi)核對(duì)象,而其它的三個(gè)都是核心對(duì)象,要借助操作系統(tǒng)來實(shí)現(xiàn),效率相對(duì)來說就比較低。

但如果要跨進(jìn)程使用還是要用到互斥器、事件對(duì)象和信號(hào)量。

總之:在設(shè)計(jì)時(shí),首先盡量不要使用全局變量,如果不得以先然后考慮使用Inter...()函數(shù),然后在是臨界區(qū)對(duì)象,最后才是事件、互斥器、信號(hào)量。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 六安市| 玉环县| 离岛区| 南木林县| 临沭县| 西平县| 顺昌县| 临泽县| 蓬莱市| 尖扎县| 苍南县| 老河口市| 南城县| 万源市| 马鞍山市| 邛崃市| 台东县| 阿瓦提县| 通河县| 平乡县| 兴仁县| 太白县| 宁乡县| 沙田区| 义马市| 兴国县| 贵定县| 穆棱市| 蒲城县| 洛宁县| 江川县| 巧家县| 宣化县| 高要市| 宁都县| 湘西| 阜新市| 瑞金市| 阿拉善左旗| 肥城市| 文成县|