有关内存顺序的大多数信息都涉及多核/多CPU。最近我问了一个有关重新排序的问题,答案主要是多核心。 在单核CPU上运行小测试后:
thread1()
{
x++;
y++;
}
thread2()
{
if (x < y)
.... should not happen, because x is incremented first.
}
x&lt; y在多核弱有序CPU上更频繁地发生,但它仍然发生在单核CPU上。 (我预期,但在大多数文章中没有提到)
任何经验,确认或解释为什么不应该在单个核心上发生(虽然它似乎没有任何编译器优化)?