volatile是一个类型修饰符。意思是不稳定,易变。ide
例如:优化
int i= 10;内存
int j = i;(1)编译器
int k = i; (2)it
这时候编译器会对代码进行优化,在后两句中,i并无被用做左值。这时候编译器认为i的值没有发生变化。因此一语句认为从内存中读取的i的值。这个值没有被丢掉,继续赋给k,这样就提升了效率。编译
再看另外一个例如:class
volatile int i = 10;效率
int j = i;数据
int k = i;di
volatile告诉编译器i的值是随时可能变化的。每次使用它的时候必须从内从中读取。于是编译器会生成汇编代码从新从i的地址处读取数据赋给k中。