linux下信號量和互斥鎖的差別是:1、信號量用在多執行緒多任務同步時,而互斥鎖是用在多執行緒多任務互斥的;2、信號量可以當一個執行緒完成了某個動作時,讓別的執行緒再進行某些動作,而互斥鎖執行緒一旦佔用某個資源,別的執行緒就無法存取。
本教學操作環境:linux7.3系統、Dell G3電腦。
信號量(semaphore[ˈseməfɔ:(r)])用在多執行緒多任務同步的,一個執行緒完成了某一個動作就透過信號量告訴別的線程,別的線程再進行某些動作。
而互斥鎖(Mutual exclusion,縮寫 Mutex)是用在多執行緒多任務互斥的,一個執行緒佔用了某一個資源,那麼別的執行緒就無法訪問,直到這個執行緒unlock,其他的執行緒才開始可以利用這個資源。
例如對全域變數的訪問,有時要加鎖,操作完了,在解鎖。儘管兩個概念有點類似,但是他們的重點不一樣,信號量不一定是鎖定某一個資源,而是流程上的概念,
例如:有A,B兩個線程,B線程要等A執行緒完成某一任務以後再進行自己下面的步驟,這個任務並不一定是鎖定某一資源,還可以是進行一些計算或資料處理之類。
而執行緒互斥量則是「鎖住某一資源」的概念,在鎖定期間內,其他執行緒無法對被保護的資料進行操作。
不難看出,mutex是semaphore的特殊情況(n=1時)。
也就是說,完全可以用後者取代前者。但是,因為mutex較為簡單,且效率高,所以在必須保證資源獨佔的情況下,還是採用這種設計。
相關推薦:《Linux影片教學》
以上是linux下信號量和互斥鎖的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!