最佳答案
我正在尝试创建一个旋转锁的哑版本。在浏览网页时,我偶然发现了 x86中的一个名为“ PAUSE”的汇编指令,它用于向处理器提示当前在这个 CPU 上运行的自旋锁。情报手册和其他可用信息表明
处理器使用此提示来避免 在大多数情况下,这将大大提高处理器的性能 因此,建议在 文档中还提到“ wait (some 是指令的伪实现。
以上段落的最后一行是直观的。如果我没有抓住锁,我必须等待一段时间,然后再次抓住锁。
但是,在自旋锁的情况下,我们所说的内存顺序违反是什么意思呢? “违反内存顺序”是否意味着在旋转锁定之后不正确的 推测加载/存储指令?
自旋锁问题之前已经在堆栈溢出问题上提出过,但是内存顺序违反问题仍然没有得到回答(至少就我的理解而言)。