为什么代码会重排序?

Posted programb

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么代码会重排序?相关的知识,希望对你有一定的参考价值。

在执行程序时,为了提供性能,处理器和编译器常常会对指令进行重排序,但是不能随意重排序,不是你想怎么排序就怎么排序,它需要满足以下两个条件:

在单线程环境下不能改变程序运行的结果;存在数据依赖关系的不允许重排序

需要注意的是:重排序不会影响单线程环境的执行结果,但是会破坏多线程的执行语义。

以上是关于为什么代码会重排序?的主要内容,如果未能解决你的问题,请参考以下文章

什么是重排序

指令重排序导致的可见性问题

重排序

7 重排序与happens-before

第七章重排序与happens-before

Java并发编程原理与实战四十一:重排序 和 happens-before