如何深入理解并发编程底层原理(四)的实践应用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计866个文字,预计阅读时间需要4分钟。
重排序+在程序执行时,为了提高性能,编译器和处理器通常会对手指令进行重排序。重排序分为三种类型。+编译器优化的重排序+编译器在不对单线程程序语义产生影响的前提下,可以重新安排指令的执行顺序。
重排序在程序执行时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分为三种类型。
- 编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。
- 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。
- 内存系统的重排序。由于处理器使用缓存和读/写缓冲区,使得加载和存储操作可能是在乱序执行。
重排序可能会导致多线程程序出现内存可见性问题。指令几并行重排序和内存系统重排序属于处理器重排序,对于处理器重排序,JMM会要求Java编译器在生成指令时,插入特定的内存屏障指令,通过内存屏障指令来禁止特定类型的处理器重排序。
本文共计866个文字,预计阅读时间需要4分钟。
重排序+在程序执行时,为了提高性能,编译器和处理器通常会对手指令进行重排序。重排序分为三种类型。+编译器优化的重排序+编译器在不对单线程程序语义产生影响的前提下,可以重新安排指令的执行顺序。
重排序在程序执行时,为了提高性能,编译器和处理器常常会对指令做重排序。重排序分为三种类型。
- 编译器优化的重排序。编译器在不改变单线程程序语义的前提下,可以重新安排语句的执行顺序。
- 指令级并行的重排序。现代处理器采用了指令级并行技术来将多条指令重叠执行。如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。
- 内存系统的重排序。由于处理器使用缓存和读/写缓冲区,使得加载和存储操作可能是在乱序执行。
重排序可能会导致多线程程序出现内存可见性问题。指令几并行重排序和内存系统重排序属于处理器重排序,对于处理器重排序,JMM会要求Java编译器在生成指令时,插入特定的内存屏障指令,通过内存屏障指令来禁止特定类型的处理器重排序。

