请稍等 ...
×

采纳答案成功!

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

关于cas的疑惑

悟空老师您好,关于cas是将比较和交换弄成一条原子指令。如果是多个线程并发执行cas指令,那么没抢到cas执行权的线程会陷入阻塞吗?还是一致尝试,整个过程不会发生上下文切换。

正在回答

2回答

没抢到cas执行权的线程会等待,然后轮到它执行的时候,CAS失败,因为前面已经被别的线程CAS修改过了。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕函数0594413 #1
    嗯,就是这个cas的等待有点疑惑。这个等待和同步代码块的等待是一个意思吗?cas的等待会使陷入阻塞吗
    回复 有任何疑惑可以回复我~ 2020-10-27 11:06:36
  • 悟空 回复 提问者 慕函数0594413 #2
    这个等待和同步代码块的等待不是一个意思,CAS的等待是由CPU级别控制的
    回复 有任何疑惑可以回复我~ 2020-10-27 17:17:50
  • 提问者 慕函数0594413 回复 悟空 #3
    好的好的,谢谢老师
    回复 有任何疑惑可以回复我~ 2020-11-23 17:13:22
海天s 2020-12-19 13:24:58

这个问题我也有疑惑,“多个线程并发执行cas指令”,假设有两个线程,两个cpu,在同一时刻线程1执行原子指令cas(56,57), 线程2执行原子指令cas(56,58),会都成功吗?像你说的会有没抢到cas执行权的线程?为什么会有抢不到执行权的?

0 回复 有任何疑惑可以回复我~
  • 悟空 #1
    可以参考https://stackoverflow.com/questions/3339141/x86-lock-question-on-multi-core-cpus
    回复 有任何疑惑可以回复我~ 2020-12-21 10:49:04
  • 海天s 回复 悟空 #2
    谢谢老师
    回复 有任何疑惑可以回复我~ 2020-12-21 11:05:20
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信