首頁 常見問題 多執行緒同步機制包括哪些

多執行緒同步機制包括哪些

Jan 07, 2021 pm 03:24 PM
多執行緒同步機制

多執行緒同步機制包括:1、Critical Section(臨界區),用來實現「排他性佔有」;2、Semaphore,用來追蹤有限的資源;3、Mutex,可以在不同的執行緒之間實現“排他性佔有”,甚至即使那些執行緒分屬不同進程;4、Event,通常使用於overlapped I/O,或用來設計某些自訂的同步物件。

多執行緒同步機制包括哪些

本文操作環境:Windows7系統,Dell G3電腦。

多執行緒同步機制包括:

1、Critical Section

Critical section(臨界區)用來實現“排他性佔有」。適用範圍是單一行程的各執行緒之間。它是:

  •  一個局部性對象,不是一個核心對象。

  •  快速且有效率。

  •  不能夠同時有一個以上的 critical section 被等待。

  •  無法偵測是否已被某個執行緒放棄。

  • 可以實作執行緒間互斥,不能用來實現同步。

2、Semaphore

Semaphore 用來追蹤有限的資源。它是:

  • 一個核心物件。

  •  沒有擁有者。

  •  可以有名,因此可以被其他行程開啟。

  •  可以被任何一個線程釋放(released)。

  • 既能實現執行緒間互斥,也能實現執行緒間同步。

  • 在跨進程中使用時,如果擁有信號量的執行緒意外結束,其它進程不會收到通知。

3、Mutex

Mutex 是核心對象,可以在不同的執行緒之間實現“排他性佔有”,甚至即使那些線程分屬不同進程。它是:

  • 一個核心物件。

  •  如果擁有 mutex 的那個執行緒結束,則會產生一個 “abandoned” 錯誤訊息。

  • i可以具名,因此可以被其他行程開啟。

  • 只能被擁有它的那個線程釋放(released)。

  • 在跨進程中使用時,如果擁有互斥器的進程意外結束,則其它進程會收到一個WAIT_ABANDOEND訊息。

4、Event

Event object 通常使用於 overlapped I/O,或用來設計某些自訂的同步物件。它是:

  •  一個核心物件。

  • 可是用來實現執行緒的互斥與同步。

  • 可以具名,因此可以被其他行程開啟。

  • 在跨進程中使用時,如果擁有信號量的執行緒意外結束,其它進程也不會受到通知。

注意:臨界區和互斥器都有「執行緒所有權」的概念,所以它們是不能用來實現執行緒間的同步的,只能用來實現互斥。原因是因為創建臨界區或互斥器的執行緒可以不用等待LeaveCriticalSection()SetEvent()就可以無條件進入保護的程式段,因為它擁有這個權利。另外,互斥器可以很好的處理」遺棄「操作。若執行緒在未釋放對向象的時候就意外終止的,其它執行緒可以等待到一個WAIT_ABANDONED_0。但是事件和信號量都不能做到。

事件和信號量都可以實現執行緒和進程間的互斥和同步。

就使用效率來說,臨界區的效率是最高的,因為它不是內核對象,而其它的三個都是核心對象,要藉助作業系統來實現,效率相對來說就比較低。

但如果要跨行程使用還是要用到互斥器、事件物件和信號量。

總之:在設計時,首先盡量不要使用全域變量,如果不得以先然後考慮使用Inter...()函數,然後在是臨界區對象,最後才是事件、互斥器、信號量。

以上是多執行緒同步機制包括哪些的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)