volatile类型限定符的认识
volatile限定符的作用就是告知计算机,代理可以改变用volatile定义的变量的值,一般它被用于多个同时运行的线程中的共享数据,
例如:一个地址可能储存着当前系统的时钟时间,无论程序做什么,地址上的值都会随时间的变化而改变,或者这个地址是负责接收另一个
计算机传来的一些信息,就是这个地址储存的内容随时都会改变。
先认识一下volatile的语法
volatile int local; //local是一个易变的变量
volatile int * polc; // polc是一个指向易变位置的指针
那么volatile的作用是什么呢?就是涉及到一个编译器的优化问题:
例如:
val1=x;
/*中间是不是用x的一些代码*/
val2=x;
分析:智能的编译器会注意到以上代码使用了两次的x,但并没有改变他的值,于是编译器就把它的值临时储存在寄存器中,然后在val2需要使用x的时候,才从寄存器中
读取x的值,并不是从x的原始地址的内存位置上读取,这样可以节约时间,这个过程被称为高速缓存(caching),如果在这中间过程一些其他的代理改变了x的值,但是编译器不知道
那么这段程序x的值赋给val2就已经过时了,所以加上volatile定义x这个变量后,编译器不会进行高速缓存。
此内容来自《C primer plus》加上自己的理解,有错误的话各位大神请在评论区指出!
相关推荐
89467505 2020-01-05
82921934 2019-12-15
小路恢宏随手记 2015-07-10
87221144 2012-05-07
Kele0 2020-05-30
网络菜市场 2020-05-11
Bloddy 2020-02-28
少年阿涛 2020-01-17
gongruitao 2019-12-27
LUOPING0 2010-08-27
qiaosym 2011-03-02
hbcbgcx 2010-12-04
pengjin 2019-11-05
cocleon 2019-11-03
javaxiaoheibai 2019-10-23
讨厌什么变成什么 2019-11-03
xienue 2019-10-29