【每日一题】如何解决ABA问题?为什么能解决?解决思路是什么?

Posted by 石福鹏 on 2020-10-15

问题分析

aba问题出现在cas机制的操作中,cas 比较并更新,比如说cas(期望的值,更新的值),如果发现变量是期望的值,那么就将该值替换为更新的值。

这里面存在的问题就在于,如果期望的值中途被人改掉了,但是后面又被改了回来, cas机制不能发现这个过程,也是发现期望值其实中间发生过变动。

解决方式

给数据加上版本号或者时间戳,比较期望值的时候 比较的是值和版本号或者时间戳,即使值相同,但是如果中间发生过变化 那么时间戳或者版本号也不同。