CAS简化理解

CAS 介绍

Compare and Swap,即比较再交换,其中有内存值V,旧值A,需要置换的值B,当V=A时,就可以把V值交换成B,如果不相等继续尝试。

举例描述

其实V就是当前内存里面的值,而旧值A就是在执行更新操作的时候在内存取出来的值,而只有在更新前取出来的值等于V值是才把B值置换过去,如果不相等就说明被别的线程给修改,那么就先取出当前的值作为A,继续进行比较置换。
比如要修改数据库里面存储某个用户的账户金额信息如:

id amount version
1 100 1

如果充值20,在修改时候先取出数据,这个时候amount=100 version=1,以版本号作为标准则A=1,V=1,B=2,进行修改的时候version=1即A=V,则可以进行修改amount=100+20,version=B=2,如果A!=V那么就继续重新获取version作为A重试。至于是否一直尝试,可以设置超时时间或者尝试次数,失败的后续用定时任务补偿。

你可能感兴趣的:(CAS简化理解)