多核CPU怎么保证线程同步?求指导

.Net技术 码拜 8年前 (2016-03-04) 2118次浏览
在单核CPU中,由于在某个时刻,只有一个线程执行,因此对于一些原子操作,永远不会在两个线程拥有
多核CPU中是怎么保证某些原子操作,例如两个线程分别在两个CPU中运行,并且在同一时刻对同一内存区域进行操作,那么多核CPU是怎么保证线程同步的呢?
解决方案

100

引用 15 楼 sp1234 的回复:

你实际上一开口提出问题的时候,你的“论据”就出现了严重的概念性问题。你此时说什么“多核、单核”,根本没有必要。

装13
单核CPU原因是任何时刻都只能有一条指令,原理上不存在需要锁,但操作系统采用可抢占式时间轮片调度的方式,有可能造成某个线程在进入某块临界区代码时是抢占了,所以提供了一个标志锁。
多核在任何时刻都可以有一条以上的指令在同步执行,这个必须要用到锁。本人知道的方式是关中断,然后锁数据总线,利用汇编xchg指令的原子性实现自旋锁。


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明多核CPU怎么保证线程同步?求指导
喜欢 (0)
[1034331897@qq.com]
分享 (0)