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可以保证对特殊地址的稳定访问,不会出错。

最新文章

  1. 利用Hexo搭建个人博客-博客初始化篇
  2. 基于ADO.NET的SqlHelper类
  3. Xml文件操作的其中一个使用方法:
  4. 咋一看DWoo 比 Smarty要好
  5. POJ 2513 Colored Sticks
  6. jquery插件----文件上传uploadfile
  7. 小学生之Oracle分析函数
  8. JSP中的Attribute和InitParameter
  9. AndroidUI组件之ListView小技巧
  10. [z] .net与java建立WebService再互相调用
  11. ArrayList 和 LinkedList的执行效率比较
  12. 从Thread.start()方法看Thread源码,多次start一个线程会怎么样
  13. WebLogic11g-集群相关概念
  14. I/O-----字符输入流
  15. java--基本数据类型的转换(强制转换)
  16. 微信浏览器无法跳转到apk下载链接 微信屏蔽了我的APP下载链接如何处理
  17. sublime text3如何在浏览器预览?
  18. RabbitMQ入门-竞争消费者模式
  19. PaperNotes Instance-Level Salient Object Segmentation
  20. linux delete file

热门文章

  1. Unity3d在安卓android的更新(APK覆盖)
  2. poj Candies
  3. UOJ 216 Jakarta Skyscrapers
  4. 【转载51CTO】Linux中引号那些事儿
  5. gcc编译动态和静态链接库
  6. form 转json最佳示例
  7. HDU4666 Hyperspace(曼哈顿)
  8. WordPress ‘crypt_private()’方法远程拒绝服务漏洞
  9. -_-#【Angular】依赖注入
  10. Best Time to Buy and Sell Stock——LeetCode