c++ volatile关键字
- volatile是关键字,用来修饰变量
- 作用
- 禁止编译器对变量的优化
- 编译器在优化代码时,会对变量的读取和写入进行优化,例如将变量从内存加载到寄存器中进行操作,以提高执行效率,但是对于volatile修饰的变量,编译器不能进行这些优化,以确保对变量的每次读写操作都是直接从内存中进行的
- 一般而言,编译器发现两次从变量i读取数据的代码之间没有对i进行过操作,会自动把上次读的数据在这次使用,而不是重新从内存中进行读取,而volatile就保证了每次都是从内存中进行读取
- 禁止编译器对变量的优化
- 使用方式
volatile int a = 10;
- volatile常用的位置
- 中断服务程序中修改的供其他程序检测的变量需要加volatile
- 多任务环境下各任务间间共享的标志应该加volatile
- 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它读写都有不同意义
- 类似const,volatile在指针方面也存在两种表示方法
int* volatile a1;
表示a1是一个指针变量,指向一个int类型的对象,并且这个指针本身是volatilevolatile int* a2;
表示a2是一个指针变量,指向一个volatile int类型的对象
- 单例模式中会出现reorder问题,可以使用volatile进行解决
作者:孙建钊
出处:http://www.cnblogs.com/sunjianzhao/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)