还是没彻底理解CAS

来源:7-1 什么是CAS

海天s

2020-12-19

我知道CAS是从硬件上实现原子性的,即CPU的一个指令就实现了“比较+替换”,但我还是不明白如果两个线程同时CAS,为什么能并发安全。
比如这个例子:当前内存值是56,cpu1执行cas(56,57),cpu2执行cas(56,58),假设两个线程同时执行,绝对的同一时刻执行,即两个cpu同时执行原子命令cas,他们都得到当前值是56,就都放行了。
这样理解的对吗?正常情况下只有一个线程能成功吧?我这种理解到底哪里有问题?一直很困扰,求老师解答,谢谢~

写回答

1回答

悟空

2020-12-21

很好的问题,CPU会在更高层面来统筹多个core之间的协作,保证两个CPU不会同时执行CAS。

1
1
海天s
谢谢老师
2020-12-21
共1条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程