CAS 操作是否保證沒有其他執行緒將在同一時間(在此程序中)訪問相同的記憶體位置,或者粗體文本指的是什么?
https://en.wikipedia.org/wiki/Compare-and-swap
在計算機科學中,比較和交換 (CAS) 是多執行緒中用于實作同步的原子指令。它將記憶體位置的內容與給定值進行比較,并且僅當它們相同時,才將該記憶體位置的內容修改為新的給定值。這是作為單個原子操作完成的。原子性保證了新值是根據最新資訊計算出來的;如果同時該值已被另一個執行緒更新,則寫入將失敗。操作的結果必須表明它是否執行了替換;這可以通過簡單的布爾回應(此變體通常稱為比較和設定)或通過回傳從記憶體位置讀取的值(而不是寫入其中的值)來完成。
uj5u.com熱心網友回復:
是的,你可以這樣想。如果 CAS 成功,則可以保證沒有其他執行緒寫入“比較”和“交換”之間的記憶體位置。
一些架構只是在操作期間鎖定該記憶體位置(或高速快取行),以便其他寫入是不可能的。在這樣的架構上,CAS 總是會成功的。在其他架構(所謂的LL/SC)上,執行 CAS 的核心可能只是監視記憶體位置,如果在錯誤的時間發生另一個寫入,CAS 將不執行寫入并指示失敗。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/527243.html
下一篇:在腳本中實作多執行緒/并行處理
