C++中的volatile
来源:互联网 发布:linux防火墙配置命令 编辑:程序博客网 时间:2024/05/22 09:04
引子
在阅读代码的过程中,相信大家都遇到过”volatile”这个关键字,有的人知道和编译器优化相关,甚至有的人根本不知道该关键字的功用
volatile
A type qualitier that you can use to declare that an object can be modified in the program by the hardware. —[volatile]
考虑下面的代码:
int some_int = 100;while (some_int == 100){ // your code}
当这个程序编译的时候,编译器如果发现这个程序永远都不会改变”some_int”的值,有可能会优化这个代码。编译器会尝试优化while循环,将”while(some_int == 100)” 简单的替换成”while(true)”,这样程序执行起来会稍微快一点。如果编译器没有对该段代码进行优化,每次循环时都会从内存读取该变量的值(如果没有将其放入寄存器的情况下),并与100进行比较。
但是有时候这种优化并不是我们所想的,如果有人想从程序外部编译器所没有意识到的地方对some_int进行修改,那么就会出错。所以为了确保正确的行为,你必须确保编译器不会因为想要优化”while(loop)”而优化掉”some_int”变量。volatile关键字就是用于这些场合的。比如:
volatile int some_int = 100;
换句话说,volatile关键字告诉编译器不要扮演上帝的角色而对代码进行任意的优化。
C++ Standard ($7.1.5.1/8):volatile is a hint to the implementation to avoid aggressive optimization involving the object because the value of the object might be changed by means undetectable by an implementation. — [volatile]
volatile关键就是一个类型限定符,用来声明有可能被操作系统,硬件,或者在多线程环境中修改的对象。
volatile对象就是被volatile关键字修饰的对象或者它的子对象是一个volatile对象。每次对volatile对象进行访问(读写或者成员函数调用等),对象都会产生可见的副作用(即使在优化的情况下)。在单线程的情况下,volatile对象的访问不会被重排序或者优化掉。
- c语言中的volatile
- c语言中的volatile
- C中的Volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- c中的volatile
- C语言中的volatile
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- C中的volatile用法
- iOS应用安全开发总结
- 计算机视觉有用的资源(很多主页含有代码)
- 自定义控件(2)---ColorMatrixColorFilter色彩矩阵颜色过滤器
- iOS -- 6位密码验证
- 使用WebView时请使用RelativeLayout
- C++中的volatile
- 2015网龙笔试题
- 使用Quick-Cocos2d-x开发植物大战僵尸04-展示植物卡片与僵尸
- 总结
- 编程之美-构造数独方法整理
- JS中的三种消息框
- 探索推荐引擎内部的秘密,第 1 部分: 推荐引擎初探
- SVN使用教程之-分支/标记 合并 subeclipse
- 欢迎使用CSDN-markdown编辑器