做seo网站优化价格青岛做网站seo
做seo网站优化价格,青岛做网站seo,东营网站推广公司,齐齐哈尔做网站的公司目录 volatile1#xff09;基本概念2#xff09;用途#xff1a;禁止编译器优化3#xff09;总结 volatile
1#xff09;基本概念
const是C语言的一个关键字。
const用于告诉编译器相应的变量可能会在程序的控制之外被修改#xff0c;因此编译器不应该对其进行优化。 … 目录 volatile1基本概念2用途禁止编译器优化3总结 volatile
1基本概念
const是C语言的一个关键字。
const用于告诉编译器相应的变量可能会在程序的控制之外被修改因此编译器不应该对其进行优化。
声明语法
volatile int A;作用
防止编译器优化确保对变量的每次访问都是实际的读写操作而不是使用缓存中的值。用于表示可能会被异步修改的变量如硬件寄存器、中断服务程序中的共享变量等。
2用途禁止编译器优化
在学习这个知识点前需要大概了解下代码运行的实质。
对于一个简单的乘法运算a a * b
在RISC中要使用4条汇编指令
① 读内存中的a
② 读内存中的b
③ 在CPU中计算a*b
④ 把结果写回内存 问题正常流程是上面的四步但是编译器可能会对变量的读写进行优化例如将变量A缓存在CPU自己的寄存器中下次使用的时候直接读CPU寄存器中的A而不去读内存中的A但内存中的A可能已经发生了变化这样可能导致无法正确地捕捉到变量的实际变化。
为了解决这种问题用volatile 去修饰A volatile int A; 就可以禁止编译器优化确保对变量的每次访问都是实际的读写操作。
这种BUG一般发生在多线程环境中全局变量等共享量没有管理好。
3总结
volatile 的使用需要谨慎特别是在多线程编程中建议使用专门设计用于同步的机制来保障正确性。
volatile 不能替代更强大的同步手段如互斥锁、原子操作等。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/91744.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!