CAS操作漏洞问题请教下老师
来源:9-6 CAS

慕仔3163040
2020-11-01
老师你好,CAS操作中,更新内存数据之前会比较下预期原值和内存中的值是否相等,如果不相等则不更新,如果相等,则做更新;这里就有个漏洞:比较内存数据和预期原值发现相等之后,以及做更新之前,这中间是有个时间间隔的,在这个时间间隔内,其它线程对内存数据做了更新,紧接着你再去更新,不就覆盖掉其它线程做的更新了吗?
写回答
1回答
-
同学好,不会的哈,CAS调用的是计算机原生汇编指令cmpxchg 属于原子操作,不会出现间隔的情况的,实际上内部也是有锁,只是锁很轻量。
"程序会根据当前处理器的类型来决定是否为cmpxchg指令添加lock前缀。如果程序是在多处理器上运行,就为cmpxchg指令加上lock前缀(lock cmpxchg)。反之,如果程序是在单处理器上运行,就省略lock前缀(单处理器自身会维护单处理器内的顺序一致性,不需要lock前缀提供的内存屏障效果)"
10
相似问题