C语言之volatile

50 阅读1分钟

volatile做了什么

volatile影响编译器编译的结果。如果没有volatile关键字,编译器则会优化读取和存储。即本次线程内,当读取一个变量时,为提高存取速度,编译器优化时会先将变量存到一个寄存器内,以后再取变量值时,直接从寄存器取值。

volatile则提醒编译器,使用它的变量随时可能发生变化,因此编译后的程序,每次需要存储或读取这个变量的时候,都需要从变量地址读取最新数据。