voliate变量是随时变化的,用voliate修饰的运算,编译器不进行优化,以免出错。

对于一个普通变量,为提高存取速率,编译器会先将变量的值存储在一个寄存器中,以后再取变量值时,就存寄存器中取出。

但是用voliate修饰的变量,就说明这个变量会发生意向不到的改变。也就是说,优化器每次在读取该值时,不会假设这个值了,每次都会小心的在读取这个变量的值,而不是在寄存器中取保留的备份。

那么,一个参数可以同时被const和voliate修饰吗?
答案是可以的,如:只读的状态寄存器。它是voliate,是因为它可能会发生意想不到的改变;它是voliate,表示程序不应该试图去改变它。

voliate关键字的应用场景
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义。

C++中voliate关键字相关推荐

  1. java voliate关键字_java中voliate关键字有什么用?

    1.保证内存可见性 内存可见性,即线程A对volatile变量的修改,其他线程获取的volatile变量都是最新的. 说到内存可见性就必须要提到Java的内存模型,如下图所示: 如上图所示,所有线程的 ...

  2. java中变量 关键字_基于java的voliate关键字详解

    voliate关键字的作用: 一.内存可见性 基于缓存一致性协议,当用voliate关键字修饰的变量改动时,cpu会通知其他线程,缓存已被修改,需要更新缓存.这样每个线程都能获取到最新的变量值. 二. ...

  3. voliate关键字

    voliate关键字详解: 1.内存模型相关概念 物理计算机内存访问图: 任何计算都是在CPU内处理的,那么也就必须涉及到数据读写,但是CPU每次都要和主内存交互读写数据效率太低了,于是有了高速缓存. ...

  4. voliate关键字原理

    被volatile修饰的变量在编译成字节码文件时会多个lock指令,该指令在执行过程中会生成相应的内存屏障,以此来解决可见性跟重排序的问题. 预备知识 指令重排序 为什么到指令重排序:一般来说,处理器 ...

  5. 关于voliate关键字

    现象 private static boolean is = false;public static void main(String[] args) {new Thread(new Runnable ...

  6. C语言中voliate关键字的作用

    一个变量用voliate关键字修饰,是要告诉编译器,这个变量的值随时可能发生变化,所以编译器每次都必须从变量对应的内存地址中获取该变量的值. voliate的常用方式: 当一个变量表示某寄存器的值时, ...

  7. Voliate关键字的作用

    Voliate关键字主要有以下两个作用: 一:内存可见性 基于缓存一致性协议,当系统或者程序中某个变量发生修改时,此时cpu会同时其他线程,告诉被通知的线程缓存内容已经被修改,通知i线程需要更新缓存, ...

  8. 【Java_基础】Java中Native关键字的作用

    本篇博文转载与:Java中Native关键字的作用 转载于:https://www.cnblogs.com/leiblog/p/10529056.html

  9. C/C++中extern关键字详解

    1 基本解释 :extern可以置于变量或者函数 前,以标示变量或者函数的定义在别的文件中 ,提示编译器遇到此变量和函数时在其他模块中寻找其定义 .此外extern也可用来进行链接指定. 也就是说ex ...

最新文章

  1. POJ 2455Secret Milking Machine(二分+网络流之最大流)
  2. 通俗易懂讲解自适应提升算法AdaBoost
  3. 多线程存数据mysql_java 多线程存储数据库
  4. python控制51单片机的红绿灯_基于51单片机的红绿灯实现(使用普中科技开发板)...
  5. oracle如何建pdb,Oracle 12c 命令行创建PDB
  6. es的分片数量和扩展性分析
  7. 数据库基础(2)选择,投影,连接,除法运算
  8. 东方木分享:如何快速的安装网吧系统
  9. IAR 8.50.9破解后,遇到IarIdePm Encoutered an improper argument错误记录
  10. Unity CityEngine 根据地图中建筑矢量数据批量建模
  11. 简易学籍管理系统(3)--插入结点并排序
  12. VirtualBox如何添加ISO文件
  13. 解决EPSON R230打印机驱动程序安装错误
  14. 两轮车燃油喷射系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. 电脑投屏到电视怎么操作_无线投屏器应用
  16. 什么是模块化与模块化的优缺点
  17. matlab画直方图的histogram()函数
  18. Doxygen 使用总结
  19. 上海封控区全职妈妈:疫情让邻里更加和睦
  20. 申请人和审批人重复,怎么处理?

热门文章

  1. Android 如何接入穿山甲广告?
  2. 智能客服通信模块实现方式
  3. Visdom 介绍 | 一
  4. 偏微分方程重要的前置知识
  5. oppo便签误删怎么办_oppo便签文件丢失(三招快速免费恢复)
  6. 计算机毕业设计系列基于JavaWeb的医院挂号预约管理系统
  7. 【原】Linux 桌面背景的存放位置
  8. SQL基础九【分组数据】
  9. php判断图片是否可用,PHP判断图片是否损坏
  10. localStorage.setItem()使用