[c]volatile关键字
2021/02
22
20:02
本意:易变的,不稳定的 ,无定性的,可能急剧波动的
作用:限制编译器对变量的存取进行优化
表明某个变量的值可能在外部被改变,因此对这些变量的存取不能缓存到寄存器,每次使用时需要重新存取。该关键字在多线程环境下经常使用,因为在编写多线程的程序时,同一个变量可能被多个线程修改,而程序通过该变量同步各个线程
不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至setjmp环境下,变量可能被其他的程序改变,编译器自己无法知道,volatile就是告诉编译器这种情况。
不做常量合并、常量传播等优化,所以像下面的代码
volatile int i = 1;
if (i>0) … // if的条件不会当作真
对volatile变量的读写不会被优化掉
CopyRights: The Post by BY-NC-SA For Authorization,Original If Not Noted,Reprint Please Indicate From 老刘@开发笔记
Post Link: [c]volatile关键字
Post Link: [c]volatile关键字