一些操作系统内核使用xchg
指令来实现spinlock
. 在他们的获取锁功能实现中,他们通常在获取锁之前使用xchg
指令禁用中断。那么,xchg
指令可以确保内存排序吗?我的意思是xchg
指令可以确保在它之后不会调用禁用中断吗?
问问题
487 次
2 回答
1
没有 XCHG 指令不能做到这一点。在 XCHG 指令执行时,处理器的 LOCK 信号自动置位,因此我们不需要额外的 LOCK 前缀来确保指令以原子方式执行。XCHG 始终以原子方式执行!并且不需要禁用中断。
于 2012-11-01T15:47:41.177 回答
0
是的。XCHG 指令可以做到这一点。
关于为什么 MemoryBarrier 可以实现为对 xchg 的调用,我得到了更好的答案?.
于 2013-10-29T08:50:21.557 回答