一些os内核使用xchg
指令来实现spinlock
。在获取锁定功能的实现中,它们通常在使用xchg
指令获取锁之前禁用中断。那么,xchg
指令可以确保内存排序吗?我的意思是可以xchg
指令确保在它之后不会调用禁用中断吗?
答案 0 :(得分:1)
没有XCHG指令不能这样做。 在执行XCHG指令时,处理器的LOCK信号自动置为有效,因此我们不需要额外的LOCK前缀来确保指令以原子方式执行。 XCHG始终以原子方式执行!并且无需禁用中断。
答案 1 :(得分:0)
是。 XCHG指令可以做到这一点。
我在why can MemoryBarrier be implemented as a call to xchg?上得到了更好的答案。