善变的volatile

    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中。

相关文章
相关标签/搜索