Tag: cpu架构

内存重新排序如何帮助处理器和编译器?

我研究了Java内存模型并看到了重新排序的问题。 一个简单的例子: boolean first = false; boolean second = false; void setValues() { first = true; second = true; } void checkValues() { while(!second); assert first; } 重新排序是非常不可预测和奇怪的。 此外,它破坏了抽象。 我认为处理器架构必须有充分的理由去做一些对程序员来说太不方便的事情。 这些原因是什么? 关于如何处理重新排序有很多信息,但我找不到任何关于它为什么需要的信息。 在任何地方,人们只会说“这是因为一些性能优势”。 例如,在first存储之前存储second的性能优势是什么? 你能推荐一些关于此的文章,论文或书籍,或者自己解释一下吗?