为什么在英特尔架构中我们需要在 CMPXCHG 之前锁定前缀。请参阅 http://courses.engr.illinois.edu/ece390/archive/spr2002/books/labmanual/inst-ref-cmpxchg.html以供参考
我不确定如果不使用锁会有什么后果。因为在将值加载到 eax 和执行 LOCK CMPXCHG 之间,无论锁定前缀如何,值都可以更改,因为将值加载到 eax 和 LOCK CMPXCHG 是两条指令。
意思是说,如果我不使用 CMPXCHG,最糟糕的可能是我必须再次旋转。