0

我正在学习同步,现在我对原子操作的定义感到困惑。通过搜索,我只能发现原子操作是不间断操作。

那么,原子操作是否只对单处理器系统有效,因为对于多处理器系统,许多操作可以同时运行?

4

1 回答 1

5

此链接非常完美地解释了它(强调我的):

在多处理器系统上,确保存在原子性有点困难。仍然可以使用与单处理器系统相同的锁(例如自旋锁),但仅使用单条指令或禁用中断并不能保证原子访问。您还必须确保系统中没有其他处理器或内核尝试访问您正在使用的数据。实现这一点的最简单方法是确保您使用的指令在总线上断言“LOCK”信号,这可以防止系统中的任何其他处理器同时访问内存。在 x86 处理器上,一些指令会自动锁定总线(例如“XCHG”),而另一些指令需要您为指令指定一个“LOCK”前缀来实现这一点(例如“CMPXCHG”,您应该将其写为“LOCK CMPXCHG op1, op2” ')。

于 2018-04-18T20:27:32.647 回答