数据库相关

ABA

ABA 问题带来的危害:

Compare and Sawp

小明在提款机,提取了50元,因为提款机问题,有两个线程,同时把余额从100变为50

  • 线程1(提款机):获取当前值100,期望更新为50,
  • 线程2(提款机):获取当前值100,期望更新为50,

线程1成功执行,线程2某种原因block了,这时,某人给小明汇款50

  • 线程3(默认):获取当前值50,期望更新为100,

这时候线程3成功执行,余额变为100, 线程2从Block中恢复,获取到的也是100,compare之后,继续更新余额为50!!! 此时可以看到,实际余额应该为100(100-50+50),但是实际上变为了50(100-50+50-50)这就是ABA问题带来的成功提交。

解决方法:

在变量前面加上版本号,每次变量更新的时候变量的版本号都+1,即A->B->A就变成了1A->2B->3A。

results matching ""

    No results matching ""