可能重复:
x86 中的暂停指令
英特尔的优化参考手册对自旋等待循环有以下说法:
3.4.1.2 自旋等待和空闲循环
Pentium 4 处理器引入了新的 PAUSE 指令;该指令在架构上是 Intel 64 和 IA-32 处理器实现上的 NOP。
对于 Pentium 4 和更高版本的处理器,该指令充当代码序列是自旋等待循环的提示。如果在此类循环中没有 PAUSE 指令,则 Pentium 4 处理器在退出循环时可能会遭受严重的惩罚,因为处理器可能会检测到可能的内存顺序违规。插入 PAUSE 指令可显着降低内存顺序违规的可能性,从而提高性能
我试图理解突出显示的部分:处理器可能检测到可能的内存顺序违规。你能解释一下这是什么意思吗?在什么情况下会在繁忙的循环中出现这种违规行为,为什么使用PAUSE
帮助?违规行为是真实的还是虚假的,不避免的后果是什么?
一个说明问题的例子会很棒。