1

一些操作系统内核使用xchg指令来实现spinlock. 在他们的获取锁功能实现中,他们通常在获取锁之前使用xchg指令禁用中断。那么,xchg指令可以确保内存排序吗?我的意思是xchg指令可以确保在它之后不会调用禁用中断吗?

4

2 回答 2

1

没有 XCHG 指令不能做到这一点。在 XCHG 指令执行时,处理器的 LOCK 信号自动置位,因此我们不需要额外的 LOCK 前缀来确保指令以原子方式执行。XCHG 始终以原子方式执行!并且不需要禁用中断。

于 2012-11-01T15:47:41.177 回答
0

是的。XCHG 指令可以做到这一点。

关于为什么 MemoryBarrier 可以实现为对 xchg 的调用,我得到了更好的答案?.

于 2013-10-29T08:50:21.557 回答