CAS 的全称为 Compare And Swap
,直译就是比较交换。是一条 CPU
的原子指 令,其作用是让 CPU 先进行比较两个值是否相等,然后原子地更新某个位置的 值,其实现方式是给予硬件平台的汇编指令,在 intel
的 CPU
中,使用的 cmpxchg
指令,就是说 CAS
是靠硬件实现的,从而在硬件层面提升效率。
简述过程是这样:
假设包含 3 个参数内存位置(V)、预期原值(A)和新值(B)。V
表示要更新变量的 值,E
表示预期值,N
表示新值。仅当 V
值等于 E
值时,才会将 V
的值设为 N
, 如果 V
值和 E
值不同,则说明已经有其他线程在做更新,则当前线程什么都不 做,最后 CAS
返回当前 V
的真实值。CAS 操作时抱着乐观的态度进行的,它总 是认为自己可以成功完成操作。基于这样的原理,CAS 操作即使没有锁,也可 以发现其他线程对于当前线程的干扰。
本文来自投稿,不代表本站立场,如若转载,请注明出处: