CAS算法的ABA问题

count++底层运算的过程;

基于 CAS(比较和交换)实现非阻塞同步(基于 CPU 硬件技术支持)
a) 内存地址(V)
b) 期望数据值(A)
c) 需要更新的值(B)
CAS 算法支持无锁状态下的并发更新,但可能会出现 ABA 问题,长时间自
旋问题 

假如说你有一个值,我拿到这个值是0,想把它变成2,我拿到1用cas操作,期望值是

1,准备变成2,对象是Object,在这个过程中没有一个线程改过我这个值,肯定可

修改。如果有一个线程在这个过程中把这个1修改成了2后来又变回1,中间值更改过

但是不影响我后面的操作,这就是ABA问题。

解决方法:如果是int类型的,最终值是你期望的。没有关系。确实想要解决的话,就是加版本,做任何一个值的修改,修改完加一,后面检查的时候连同版本号一起检查。

 

参考:https://blog.youkuaiyun.com/weixin_44998030/article/details/105325844

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值