[转]简述volatile
volatile int i=10;
int j = i;
...
int k = i; volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。 volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。 其中编译器编译优化是:
由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把上次读的数据放在k中。而不是重新从i里面读。这样以来,如果i是一个寄存器变量或者表示一个端口数据就容易出错,所以说volatile可以保证对特殊地址的稳定访问,不会出错。
最新文章
- 利用Hexo搭建个人博客-博客初始化篇
- 基于ADO.NET的SqlHelper类
- Xml文件操作的其中一个使用方法:
- 咋一看DWoo 比 Smarty要好
- POJ 2513 Colored Sticks
- jquery插件----文件上传uploadfile
- 小学生之Oracle分析函数
- JSP中的Attribute和InitParameter
- AndroidUI组件之ListView小技巧
- [z] .net与java建立WebService再互相调用
- ArrayList 和 LinkedList的执行效率比较
- 从Thread.start()方法看Thread源码,多次start一个线程会怎么样
- WebLogic11g-集群相关概念
- I/O-----字符输入流
- java--基本数据类型的转换(强制转换)
- 微信浏览器无法跳转到apk下载链接 微信屏蔽了我的APP下载链接如何处理
- sublime text3如何在浏览器预览?
- RabbitMQ入门-竞争消费者模式
- PaperNotes Instance-Level Salient Object Segmentation
- linux delete file
热门文章
- Unity3d在安卓android的更新(APK覆盖)
- poj Candies
- UOJ 216 Jakarta Skyscrapers
- 【转载51CTO】Linux中引号那些事儿
- gcc编译动态和静态链接库
- form 转json最佳示例
- HDU4666 Hyperspace(曼哈顿)
- WordPress ‘crypt_private()’方法远程拒绝服务漏洞
- -_-#【Angular】依赖注入
- Best Time to Buy and Sell Stock——LeetCode