在单核CPU中,由于在某个时刻,只有一个线程执行,因此对于一些原子操作,永远不会在两个线程拥有
那多核CPU中是怎么保证某些原子操作,例如两个线程分别在两个CPU中运行,并且在同一时刻对同一内存区域进行操作,那么多核CPU是怎么保证线程同步的呢?
那多核CPU中是怎么保证某些原子操作,例如两个线程分别在两个CPU中运行,并且在同一时刻对同一内存区域进行操作,那么多核CPU是怎么保证线程同步的呢?
解决方案
100
装13
单核CPU原因是任何时刻都只能有一条指令,原理上不存在需要锁,但操作系统采用可抢占式时间轮片调度的方式,有可能造成某个线程在进入某块临界区代码时是抢占了,所以提供了一个标志锁。
多核在任何时刻都可以有一条以上的指令在同步执行,这个必须要用到锁。本人知道的方式是关中断,然后锁数据总线,利用汇编xchg指令的原子性实现自旋锁。