首頁  >  文章  >  運維  >  linux下信號量和互斥鎖的差別是什麼

linux下信號量和互斥鎖的差別是什麼

WBOY
WBOY原創
2022-03-18 12:14:073773瀏覽

linux下信號量和互斥鎖的差別是:1、信號量用在多執行緒多任務同步時,而互斥鎖是用在多執行緒多任務互斥的;2、信號量可以當一個執行緒完成了某個動作時,讓別的執行緒再進行某些動作,而互斥鎖執行緒一旦佔用某個資源,別的執行緒就無法存取。

linux下信號量和互斥鎖的差別是什麼

本教學操作環境:linux7.3系統、Dell G3電腦。

linux下信號量和互斥鎖的差別是什麼

信號量(semaphore[ˈseməfɔ:(r)])用在多執行緒多任務同步的,一個執行緒完成了某一個動作就透過信號量告訴別的線程,別的線程再進行某些動作。

而互斥鎖(Mutual exclusion,縮寫 Mutex)是用在多執行緒多任務互斥的,一個執行緒佔用了某一個資源,那麼別的執行緒就無法訪問,直到這個執行緒unlock,其他的執行緒才開始可以利用這個資源。

例如對全域變數的訪問,有時要加鎖,操作完了,在解鎖。儘管兩個概念有點類似,但是他們的重點不一樣,信號量不一定是鎖定某一個資源,而是流程上的概念,

例如:有A,B兩個線程,B線程要等A執行緒完成某一任務以後再進行自己下面的步驟,這個任務並不一定是鎖定某一資源,還可以是進行一些計算或資料處理之類。

而執行緒互斥量則是「鎖住某一資源」的概念,在鎖定期間內,其他執行緒無法對被保護的資料進行操作。

不難看出,mutex是semaphore的特殊情況(n=1時)。

也就是說,完全可以用後者取代前者。但是,因為mutex較為簡單,且效率高,所以在必須保證資源獨佔的情況下,還是採用這種設計。

相關推薦:《Linux影片教學

以上是linux下信號量和互斥鎖的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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