CAS中ABA问题

在线程1最后需要写入比较时,发现预估值与内存值都为1是相同的,就会误以为之前没有其他线程操作,其时之前线程2将1->2,又将2->1,称为ABA。

4.4.1解决方法

添加类的版本号,来避免ABA问题,如原来内存值为(A,1),线程2改为(B,2),又改为(A,3),最后线程1用预期值(A,1)与内存值(A,3),进行比较就会发现不一样。

相关推荐
froginwe113 分钟前
PHP MySQL 插入数据
开发语言
码界奇点5 分钟前
基于Go语言的Web管理面板系统设计与实现
开发语言·后端·golang·毕业设计·web·go语言·源代码管理
WizLC5 分钟前
【后端】关于Elasticsearch的入门,下载安装+使用
java·大数据·后端·elasticsearch·搜索引擎·全文检索
青云交5 分钟前
Java 大视界 -- 438 台物联网设备时序数据难题破解:Java+Redis+HBase+Kafka 实战全解析(查询延迟 18ms)(438)
java·智能制造·redis 缓存·hbase 存储·时序数据处理·kafka 消息队列·ai 异常检测
小此方5 分钟前
Re: ゼロから学ぶ C++ 入門(六)类和对象·第三篇:运算符重载
开发语言·c++·后端
Slow菜鸟7 分钟前
Java基础 | JSON 处理手册
java·开发语言·json
_OP_CHEN7 分钟前
【Python基础】(五)Python 库使用全攻略:从标准库到第三方库,让开发效率翻倍
开发语言·python·pip·项目实战·python标准库·python第三方库
浮尘笔记11 分钟前
Go语言条件变量sync.Cond:线程间的协调者
开发语言·后端·golang
北城以北888812 分钟前
SpringBoot--Spring Boot原生缓存基于Redis的Cacheable注解使用
java·spring boot·redis·缓存·intellij-idea