采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
悟空老师您好,关于cas是将比较和交换弄成一条原子指令。如果是多个线程并发执行cas指令,那么没抢到cas执行权的线程会陷入阻塞吗?还是一致尝试,整个过程不会发生上下文切换。
没抢到cas执行权的线程会等待,然后轮到它执行的时候,CAS失败,因为前面已经被别的线程CAS修改过了。
嗯,就是这个cas的等待有点疑惑。这个等待和同步代码块的等待是一个意思吗?cas的等待会使陷入阻塞吗
这个等待和同步代码块的等待不是一个意思,CAS的等待是由CPU级别控制的
好的好的,谢谢老师
这个问题我也有疑惑,“多个线程并发执行cas指令”,假设有两个线程,两个cpu,在同一时刻线程1执行原子指令cas(56,57), 线程2执行原子指令cas(56,58),会都成功吗?像你说的会有没抢到cas执行权的线程?为什么会有抢不到执行权的?
可以参考https://stackoverflow.com/questions/3339141/x86-lock-question-on-multi-core-cpus
谢谢老师
登录后可查看更多问答,登录/注册
JUC全方位讲解,构建并发工具类知识体系
960 11
1.4k 10
992 10
975 10
1.4k 9