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重试。至于是否一直尝试,可以设置超时时间或者尝试次数,失败的后续用定时任务补偿。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。