CAS操作漏洞问题请教下老师

来源:9-6 CAS

慕仔3163040

2020-11-01

老师你好,CAS操作中,更新内存数据之前会比较下预期原值和内存中的值是否相等,如果不相等则不更新,如果相等,则做更新;这里就有个漏洞:比较内存数据和预期原值发现相等之后,以及做更新之前,这中间是有个时间间隔的,在这个时间间隔内,其它线程对内存数据做了更新,紧接着你再去更新,不就覆盖掉其它线程做的更新了吗?

写回答

1回答

翔仔

2020-11-01

同学好,不会的哈,CAS调用的是计算机原生汇编指令cmpxchg 属于原子操作,不会出现间隔的情况的,实际上内部也是有锁,只是锁很轻量。

"程序会根据当前处理器的类型来决定是否为cmpxchg指令添加lock前缀。如果程序是在多处理器上运行,就为cmpxchg指令加上lock前缀(lock cmpxchg)。反之,如果程序是在单处理器上运行,就省略lock前缀(单处理器自身会维护单处理器内的顺序一致性,不需要lock前缀提供的内存屏障效果)"

1
0

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8442 学习 · 1872 问题

查看课程