我正在学习同步,现在我对原子操作的定义感到困惑。通过搜索,我只能发现原子操作是不间断的操作。
那么,原子操作不会对uni处理器系统有效,因为对于多处理器系统,可以同时运行多个操作吗?
答案 0 :(得分:1)
This link非常完美地解释了它(强调我的):
在多处理器系统上,确保存在原子性是一点点 更难。仍然可以使用相同的锁(例如自旋锁) 与单处理器系统一样,但仅使用单个指令 或禁用中断不保证原子访问。 你必须 还要确保系统中没有其他处理器或核心尝试 访问您正在使用的数据。实现这一目标的最简单方法 是为了确保您使用的说明声明“锁定”。 总线上的信号,阻止系统中的任何其他处理器 从同时访问内存。在x86处理器上,一些 指令自动锁定总线(例如' XCHG')和其他人 要求你指定一个' LOCK'前缀到指令实现 这个(例如' CMPXCHG',你应该把它写成' LOCK CMPXCHG op1, OP2'。)