Loading AI tools
来自维基百科,自由的百科全书
排號自旋鎖是計算機科學中的一種多線程同步機制。類似於自旋鎖,但每一個申請排隊自旋鎖的線程獲得一個排隊號(ticket)。至多一個線程擁有自旋鎖,當它釋放鎖時,把自身的ticket加1作為下一個可獲得鎖的ticket,持有該ticket的線程在自旋檢查時就可發現已經獲得了自旋鎖。這種機制類似於一些提供社會服務的場所(如銀行):進門的顧客從排號機獲取一個等待號,然後不斷檢查當前可服務的號,直至輪到其手持的號。
Linux內核實現的排號自旋鎖,比更簡單的基於test-and-set或exchange的自旋鎖,有更低時耗。下表比較了各種自旋鎖:[2]
標準 | test-and-set | Test and Test-and-set | Load-link/store-conditional | Ticket | ABQL |
---|---|---|---|---|---|
Uncontended latency | Lowest | Lower | Lower | Higher | Higher |
1 Release max traffic | Ө(p) | Ө(p) | Ө(p) | Ө(p) | Ө(1) |
Wait traffic | High | - | - | - | - |
Storage | Ө(1) | Ө(1) | Ө(1) | Ө(1) | Ө(p) |
Fairness guarantee | No | No | No | Yes | Yes |
排號自旋鎖的一個缺點是隨着CPU核數增加,性能指數下降。[4]
1991年Mellor-Crummey與Scott引入概念。[3]2008年被Linux內核使用。[5] [6] 2010年7月,解決了半虛擬化問題。[7]2015年3月,Red Hat Enterprise Linux使用了這種鎖。[8]
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.