重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段.
重排序会遵守as-if-serial,即不管怎么排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变.所以,编译器和处理器不会对存在依赖关系的操作做重排序,因为这会改变执行结果.
但是,对于不同处理器或者不同线程之间,这种数据依赖不会被编译器和处理器考虑.也就是重排序会导致在多线程的情况下会影响执行结果.
此时需要用volatile修饰变量,可以禁止重排序.
重排序是指编译器和处理器为了优化程序性能而对指令序列进行重新排序的一种手段.
重排序会遵守as-if-serial,即不管怎么排序(编译器和处理器为了提高并行度),(单线程)程序的执行结果不能被改变.所以,编译器和处理器不会对存在依赖关系的操作做重排序,因为这会改变执行结果.
但是,对于不同处理器或者不同线程之间,这种数据依赖不会被编译器和处理器考虑.也就是重排序会导致在多线程的情况下会影响执行结果.
此时需要用volatile修饰变量,可以禁止重排序.
本文标题:重排序
本文链接:https://www.haomeiwen.com/subject/txaquqtx.html
网友评论