開心生活站

位置:首頁 > IT科技 > 

自旋鎖和互斥鎖的區別

IT科技1.13W

自旋鎖和互斥鎖的區別是:

自旋鎖和互斥鎖的區別

自旋鎖與互斥鎖有點類似,只是自旋鎖不會引起呼叫者睡眠,如果自旋鎖已經被別的執行單元保持,呼叫者就一直迴圈在那裡看是 否該自旋鎖的保持者已經釋放了鎖,“自旋”一詞就是因此而得名。其作用是為了解決某項資源的互斥使用。因為自旋鎖不會引起呼叫者睡眠,所以自旋鎖的效率遠高於互斥鎖。雖然它的效率比互斥鎖高。

自旋鎖一直佔用CPU,他在未獲得鎖的情況下,一直執行--自旋,所以佔用著CPU,如果不能在很短的時 間內獲得鎖,這無疑會使CPU效率降低。在用自旋鎖時有可能造成死鎖,當遞迴呼叫時有可能造成死鎖,呼叫有些其他函式也可能造成死鎖,因此要慎重使用自旋鎖,自旋鎖只有在核心可搶佔式或SMP的情況下才真正需要,在單CPU且不可搶佔式的核心下,自旋鎖的操作為空操作。自旋鎖適用於鎖使用者保持鎖時間比較短的情況下。

標籤:自旋 互斥