【发布时间】:2013-06-10 08:53:47
【问题描述】:
为什么在英特尔架构中我们需要在 CMPXCHG 之前使用锁定前缀。 请参阅以供参考 http://courses.engr.illinois.edu/ece390/archive/spr2002/books/labmanual/inst-ref-cmpxchg.html
我不确定如果不使用锁会有什么后果。因为在将值加载到 eax 和执行 LOCK CMPXCHG 之间,无论锁定前缀如何,值都可以更改,因为将值加载到 eax 和 LOCK CMPXCHG 是两条指令。
意思是说如果我不使用 CMPXCHG 最糟糕的事情就是我必须再次旋转。
【问题讨论】:
-
@Evan Carroll 为什么这个问题在另一个问题之前被问到是重复的
-
因为我评估质量、受欢迎程度和贡献,而另一个问题的形式更好,更受欢迎,并且彼得科德斯的答案相当于黄金。首先提出问题是巨大的,但它不是 100%(如果是这样,我们就不会被允许将旧问题复制到新问题上)。不过我确实给了你一个赞成票=)
标签: assembly parallel-processing x86 compare-and-swap