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.多线程中多任务的共享变量。

 

 

 

posted @ 2013-04-21 11:45  成长的点点滴滴  阅读(122)  评论(0)    收藏  举报