编译器为了优化程序的执行性能,可能对代码的执行顺序进行了调整或者是使用了寄存器代替内存访问,这种情况下,我们可以使用volatile关键字试图阻止过度优化,
volatile主要做了两件事情:
1,阻止编译器为了提高速度将一个变量缓冲到寄存器内而不写回。(在多线程并发下由于寄存器属于线程所有,会导致问题)
2,阻止编译器调整操作volatile变量的指令顺序。(但解决不了由于CPU的动态调度换序)
编译器为了优化程序的执行性能,可能对代码的执行顺序进行了调整或者是使用了寄存器代替内存访问,这种情况下,我们可以使用volatile关键字试图阻止过度优化,
volatile主要做了两件事情:
1,阻止编译器为了提高速度将一个变量缓冲到寄存器内而不写回。(在多线程并发下由于寄存器属于线程所有,会导致问题)
2,阻止编译器调整操作volatile变量的指令顺序。(但解决不了由于CPU的动态调度换序)