網路程式設計 自旋鎖 互斥鎖 讀寫鎖 遞迴鎖

2021-10-06 13:15:55 字數 437 閱讀 9732

自旋鎖 互斥鎖 讀寫鎖 遞迴鎖

自旋鎖:

互斥鎖:

1.自旋鎖不會睡眠,互斥鎖會睡眠,因此自旋鎖效率高於互斥鎖。------自旋鎖比較適用於鎖使用者保持鎖時間比較短的情況

2.自旋鎖消耗cpu:由於一直查詢,所以自旋鎖一直占用cpu,互斥鎖不會,自旋鎖導致cpu使用效率低

3.自旋鎖容易造成死鎖-------比如遞迴呼叫

遞迴程式決不能在持有自旋鎖時呼叫它自己,也決不能在遞迴呼叫時試圖獲得相同的自旋鎖。此外如果乙個程序已經將資源鎖定,那麼,即使其它申請這個資源的程序不停地瘋狂"自旋",也無法獲得資源,從而進入死迴圈。

讀寫鎖:

讀鎖:允許多個執行緒同時持有,進行讀—

寫鎖:只能有乙個執行緒寫

但讀寫鎖不能同時獲取,即讀的時候,不允許有寫鎖工作,寫的時候不允許讀鎖工作

Linux 互斥鎖 遞迴鎖 自旋鎖 讀寫鎖

在多執行緒中,我們經常會要用到鎖,那麼,鎖是什麼,我們為什麼要用到鎖?回到問題的本質,我們在什麼場景下會用到鎖?鎖是針對程式中的臨界資源,也就是公共資源的,當我們有兩個或多個執行緒同時對乙個臨界資源操作的時候,為了保證共享資料操作的完整性,我們要為這些公共資源加鎖。在linux中常見的鎖主要有互斥鎖...

互斥鎖 遞迴鎖 讀寫鎖和自旋鎖區別

共享資源的使用是互斥的,即乙個執行緒獲得資源的使用權後就會將改資源加鎖,使用完後會將其解鎖,所以在使用過程中有其它執行緒想要獲取該資源的鎖,那麼它就會被阻塞陷入睡眠狀態,直到該資源被解鎖才會別喚醒,如果被阻塞的資源不止乙個,那麼它們都會被喚醒,但是獲得資源使用權的是第乙個被喚醒的執行緒,其它執行緒又...

嵌入式 自旋鎖 互斥鎖 讀寫鎖 遞迴鎖

互斥鎖 mutexlock 最常使用於執行緒同步的鎖 標記用來保證在任一時刻,只能有乙個執行緒訪問該物件,同一執行緒多次加鎖操作會造成死鎖 臨界區和互斥量都可用來實現此鎖,通常情況下鎖操作失敗會將該執行緒睡眠等待鎖釋放時被喚醒 自旋鎖 spinlock 同樣用來標記只能有乙個執行緒訪問該物件,在同一...