请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

CAS漏洞问题

老师好,有个问题想要请教一下哈,CAS分为两个步骤,先是比较内存中的值是否符合预期,一个是更新内存中的值。一个线程比较内存中的值符合预期,准备进行值更新的时候,正在这时会不会出现另外一个线程已经完成比较以及值更新了呢?

正在回答 回答被采纳积分+3

插入代码

1回答

翔仔 2021-06-04 23:26:37

同学好,CAS是原子操作,更新时会存在同学说的问题,这样就会更新失败

0 回复 有任何疑惑可以回复我~
  • 提问者 可乐少女 #1
    老师好,CAS是原子操作,就像上面说的那样,一个线程会更新失败,这样的话,怎么会出现ABA问题呢?
    回复 有任何疑惑可以回复我~ 2021-06-16 14:37:57
  • 翔仔 回复 提问者 可乐少女 #2
    同学好,这里说的是CAS算法本身存在的问题,如果它是原子操作,就不会有这个问题,但是原子操作需要机制去保证,具体可以看看 https://blog.csdn.net/justry_deng/article/details/83449038
    回复 有任何疑惑可以回复我~ 2021-06-18 02:39:04
  • 提问者 可乐少女 回复 翔仔 #3
    老师好,还是有点想不明白,“CAS调用的是计算机原生汇编指令cmpxchg 属于原子操作,不会出现间隔的情况的”,既然不会出现间隔的情况,那是怎么出现ABA的问题呢?
    如果一个线程期望的值为A,内存中的值也是A,在将值更新为B的时候,另外一个线程将A改成C又改成A,那CAS是原子操作的话,前一个线程不应该更新失败吗?如果更新失败,这能叫做ABA问题吗?
    回复 有任何疑惑可以回复我~ 2021-06-28 22:56:53

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号