采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师好,有个问题想要请教一下哈,CAS分为两个步骤,先是比较内存中的值是否符合预期,一个是更新内存中的值。一个线程比较内存中的值符合预期,准备进行值更新的时候,正在这时会不会出现另外一个线程已经完成比较以及值更新了呢?
同学好,CAS是原子操作,更新时会存在同学说的问题,这样就会更新失败
老师好,CAS是原子操作,就像上面说的那样,一个线程会更新失败,这样的话,怎么会出现ABA问题呢?
同学好,这里说的是CAS算法本身存在的问题,如果它是原子操作,就不会有这个问题,但是原子操作需要机制去保证,具体可以看看 https://blog.csdn.net/justry_deng/article/details/83449038
老师好,还是有点想不明白,“CAS调用的是计算机原生汇编指令cmpxchg 属于原子操作,不会出现间隔的情况的”,既然不会出现间隔的情况,那是怎么出现ABA的问题呢? 如果一个线程期望的值为A,内存中的值也是A,在将值更新为B的时候,另外一个线程将A改成C又改成A,那CAS是原子操作的话,前一个线程不应该更新失败吗?如果更新失败,这能叫做ABA问题吗?
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.9k 27
2.8k 22
1.3k 15
1.5k 14
1.4k 14
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号