对CAS算法的简单理解

在了解和看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,否则什么都不做。


猜你喜欢

转载自blog.csdn.net/adrian_dai/article/details/79605267