关键字volatile
volatile,本意是“易变的”。
在C语言中作为关键字使用,指示一个变量可能被后台程序改变。用volatile修饰的变量,每次使用时都会从内存中重新加载内容,而不是直接从寄存器拷贝内容。
volatile和优化有关
- 由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。
- 编译器优化常用的方法有:将内存变量缓存到寄存器;调整指令顺序充分利用CPU指令流水线,常见的是重新排序读写指令。
我们可以使用volatile关键字试图阻止过度优化,volatile基本可以做到以下两件事情:
1.阻止编译器为了提高速度将一个变量缓存到寄存器内而不写回。
2.阻止编译器调整操作volatile变量的指令顺序。
——以上答案来自《程序员的自我修养》29页。