volatile关键字
详解:http://www.cnblogs.com/chio/archive/2007/11/24/970632.html
http://blog.csdn.net/tigerjb/article/details/7427366
volatile 影响编译器的输出结果,表示该变量是易变的,所有跟该变量有关的运算,均不用优化编译。
作用:
1.告诉编译器不做任何优化。
2.由于该变量可能被意想不到的改变,因此,每次存储和读取该变量都必须重新从源地址读取。不能使用存放在寄存器的备份。
eg.
volatile int i=10;
int j=i;
int k=i;
如果没有volatile 关键字,优化器是这样进行优化的,第一次读取i赋给了j,并把i的副本存放在一个寄存器中,并没有对该变量做任何操作,于是在给k赋值时从寄存器中读取i的副本。 加上volatile后,每次均从i的源地址读取i的值。保证了i的一致性。
使用volatile的例子:
1.并行设备的硬件寄存器中。
2.中断服务子程序中访问到的非自动变量。
3.多线程中多任务的共享变量。

浙公网安备 33010602011771号