原子操作定义和多处理器

时间:2018-03-18 10:01:12

标签: atomicity multiprocessor

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

那么,原子操作不会对uni处理器系统有效,因为对于多处理器系统,可以同时运行多个操作吗?

1 个答案:

答案 0 :(得分:1)

This link非常完美地解释了它(强调我的):

  

在多处理器系统上,确保存在原子性是一点点   更难。仍然可以使用相同的锁(例如自旋锁)   与单处理器系统一样,但仅使用单个指令   或禁用中断不保证原子访问。 你必须   还要确保系统中没有其他处理器或核心尝试   访问您正在使用的数据。实现这一目标的最简单方法   是为了确保您使用的说明声明“锁定”。   总线上的信号,阻止系统中的任何其他处理器   从同时访问内存。在x86处理器上,一些   指令自动锁定总线(例如' XCHG')和其他人   要求你指定一个' LOCK'前缀到指令实现   这个(例如' CMPXCHG',你应该把它写成' LOCK CMPXCHG op1,   OP2'。)