對CAS演算法的簡單理解

Adrian_Dai發表於2018-03-18

在瞭解和看AbstractQueuedSynchronizer的原始碼時,經常出現了compareAndSetHead和compareAndSetTail,這兩個方法底層都是呼叫了unsafe.compareAndSwapObject(this, valueOffset, expect, update);

這個方法是主要是利用了CPU的CAS指令,即是CAS演算法。

 

該方法的主要邏輯是

if (this == expect) {
  this = update
 return true;
} else {
return false;
} 

這樣我們可以理解CAS為:

CAS3個引數值,記憶體值V(this),舊的值A(expect)和要新值B(update)當且僅當預期值A和記憶體值V相同時,將記憶體值V修改為B,否則什麼都不做。


相關文章