xchg指令可以确保内存排序吗?

时间:2012-11-01 14:04:05

标签: operating-system x86 cpu

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

我在why can MemoryBarrier be implemented as a call to xchg?上得到了更好的答案。