首页 > 其他 > 详细

volatile类型限定符的认识

时间:2020-06-26 14:45:45      阅读:68      评论:0      收藏:0      [点我收藏+]

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》加上自己的理解,有错误的话各位大神请在评论区指出!

volatile类型限定符的认识

原文:https://www.cnblogs.com/masterMimic/p/13194865.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!