volatile的用法
volatile:易变的,在编译器认识的范围之外,这个值时可以改变的。
主要用来多线程编码方式中
一个变量可以 用 const volatile 一起修饰
const volatile int i=10; 是可以的,它的意思是 程序员不能改变这个对象,但是外部环境可以改变。
举个简单的例子来说明
int main()
{
const int i=10;
cout<<i<<endl;
*((int*)&i)=11;
cout<<i<<endl;
return 0;
}
运行结果
分析 编译器 发现 变量i 是const ,即认为i在当前作用域范围之内值是不会改变的,把变量id的值存到寄存器里,以后读取的时候直接读。而 *((int*)&i)=11;进行强制修改了i的值,但是输出结果还是10;
如果代码 改为
int main()
{
const volatile int i=10;
cout<<i<<endl;
*((int*)&i)=11;
cout<<i<<endl;
return 0;
}
运行结果:
转载于:https://blog.51cto.com/lihaichuan/1186642
volatile的用法相关推荐
- java volatile实例_Java的Volatile实例用法及讲解
Java的Volatile实例用法及讲解 发布时间:2020-10-03 12:01:58 来源:脚本之家 阅读:88 作者:konami 在原子性.可见性.有序性中,volatile关键字主要在可见 ...
- C语言中的关键字“ volatile”的用法(摘)
C语言中的关键字" volatile"的用法(摘) volatile 这个ANSI C 关键字在经典的C 教程中很少提及,高层编程的人也可能永远都 不会用到,但是作为嵌入式开发者来 ...
- 嵌入式开发中关键字_IO 和 volatile的用法
一.描述 在开发嵌入式过程中,常会看到_IO 修饰符,这两个修饰符是在Core_cm3.h中被重定义: /* IO definitions (access restrictions to periph ...
- [转] C++中 const, volatile, mutable用法
const.volatile.mutable的用法 const修饰普通变量和指针 const修饰变量,一般有两种写法: const TYPE value; TYPE const value; 这两种写 ...
- java $ 用法_Java的Volatile实例用法及讲解
在原子性.可见性.有序性中,volatile关键字主要在可见性中发挥作用. volatile声明的变量对所有线程来说是可见的,就是说当变量的值发生改变的时候,其他线程可以立马发现这个变化. publi ...
- C#中volatile的用法
恐怕比较一下volatile和synchronized的不同是最容易解释清楚的.volatile是变量修饰符,而synchronized则作用于一段代码或方法:看如下三句get代码: int i1; ...
- (转)KEIL里 Volatile的用法
volatile用于防止相关变量被优化. 例如对外部寄存器的读写.对有些外部设备的寄存器来说,读写操作可能都会引发一定硬件操作,但是如果不加volatile,编译器会把这些寄存器作为普通变量处理,例如 ...
- static和volatile的用法
关于volatile关键字的说明以及测试(转载) volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改,比如:操作系统.硬件或者其它线程等.遇到这个关键字声明的 ...
- volatile用法详解
我在 开发 中也常常遇到这个问题,发现通常用在两个方面,一方面 是 对 硬件 寄存器 或固定内存 的 访问,一般要用到,这就是我们常常在寄存器的头 文件 常常看到的,另一个就是在 多 线程,或主 程序 ...
最新文章
- 汉字转换成全拼的拼音
- 根据gtf格式的基因注释文件得到人所有基因的染色体坐标
- Android之记录并研究Volley框架中知识点
- 【Tools】WireShark3.2安装教程详解
- 《线程管理:传递参数、确定线程数量、线程标识》
- 中国移民去哪儿 新京报
- 美国住宅保修公司新增支持加密货币支付,并决定将 BTC 列入资产负债表
- 实验9-编程显示字符串
- 语音识别基本原理介绍--gmm-hmm中训练的完整版
- 隐马尔科夫模型 和动态贝叶斯网络
- 基于吸盘的scara机械臂
- [机器学习必知必会]泛化误差率的偏差-方差分解
- 《如何阅读一本书》章节要点整理
- CleanMyMac最新破解安装版
- @Deprecated 的功能
- 夫妻贷款买房需要注意什么
- ajax的响应与取消响应
- QNAP(威联通)联合创始人郭博达先生一行到访
- nginx 解决504超时问题
- 如何在IDEA中创建web项目并且部署到Tomcat中