自旋鎖 spinlock 理解

2021-05-22 11:45:26 字數 447 閱讀 2422

自旋鎖spinlock是一種對臨界資源進行互斥手訪問的典型手段,其名稱源於他的工作方式。為了獲得乙個自旋鎖,在某cpu上執行的**需先執行乙個原子操作,該操作測試並設定test-and-set某個記憶體變數,由於他是原子操作,所以在該操作完成之前其它執行單元不可能訪問這個記憶體變數。

如果測試結果表明鎖已經空閒,則程式獲得這個自旋鎖並繼續執行;如果測試結果表明鎖仍被占用,程式將在乙個小的迴圈內重複這個  測試並設定 操作,即進行所謂的 自旋,通俗的說就是 在原地打轉。當自旋鎖的持有者 通過重置該變數釋放這個自旋鎖後,摸個等待的 測試並設定 操作向其呼叫者報告鎖已經釋放。

理解自旋鎖最簡單的方法是 把它作為乙個 變數 看待,該變數把乙個臨界區或 標誌為 "我當前在執行,清稍等",或標誌為「我當前不再執行,可以被使用」。如果a執行單元首先進入例程,他將持有自旋鎖,當b執行單元試圖進入同乙個例程,,他獲知自旋鎖已被持有,需到a執行單元釋放後才能進入。

執行緒同步 自旋鎖 SpinLock

自旋鎖 spinlock 是指當乙個執行緒在獲取鎖的時候,如果鎖已經被其它執行緒獲取,那麼該執行緒將迴圈等待,然後不斷的判斷鎖是否能夠被成功獲取,直到獲取到鎖才會退出迴圈。什麼情況下使用自旋鎖 自旋鎖非常有助於避免阻塞,但是如果預期有大量阻塞,由於旋轉過多,您可能不應該使用自旋鎖。當鎖是細粒度的並且...

自旋鎖spinlock剖析與改進

自旋鎖spinlock剖析與改進 原文 1,spinlock介紹 spinlock又稱自旋鎖,執行緒通過busy wait loop的方式來獲取鎖,任時刻只有乙個執行緒能夠獲得鎖,其他執行緒忙等待直到獲得鎖。spinlock在多處理器多執行緒環境的場景中有很廣泛的使用,一般要求使用spinlock的...

不可睡眠鎖 自旋鎖spinlock編碼學習

開源力量學習筆記 自旋鎖 spinlock 簡介 自旋鎖是核心的一種同步機制,在同一時刻只能被最多乙個核心任務持有,所以乙個時刻只有乙個執行緒允許存在於臨界區中。核心可以通過自旋鎖占有某些資源,直到使用完後再釋放鎖。如果該資源已經被其他的任務占有了,那核心會不斷等待,直到獲得該資源。這點可以應用在多...