嗯,這個主題並不像看起來那麼簡單。我們知道mutex
可以通過一個信號量來實現,初始計數= 1。
但通過幾篇文章去,我還發現,努力大量已經進入分離這兩個,治療mutex
作爲一個獨立的概念,從semaphore
問題Priority Inversion不同,其導致的priority inheritance一個新的概念,有點讓我感到困惑。
信號量和互斥量在優先級反轉方面的區別(也可能是優先級繼承)
也有人提到ownership
(如出現在what-is-mutex-and-semaphore-in-java-what-is-the-main-difference)的互斥體。那麼ownership
是不好的名詞。 Mutex絕不是共享資源的所有者。 Holding a Lock
和Releasing a Lock
,是有效的信令,或許象方式,*Hey wait !! Till I complete and signal you*
尋找具有導致Mutex
從分離Semaphore
(與初始計數= 1)
是的你是對的。爲了使優先級繼承正常工作,線程B將暫時繼承優先級更高的線程A的優先級。本質上,只是一個「條件變量」,比如'semaphore'並不總是足夠的。雖然'互斥量'可以用信號量來模擬,但只能用於有限的場景。對於E.g:'遞歸互斥'和'監聽'更加複雜,僅僅通過'semaphore'來實現。我還發現這個鏈接非常有用:http://en.wikipedia.org/wiki/Condition_variable#Condition_variables – aknon