C++ volatile关键字说明

2023-05-16

内容摘抄自https://www.jb51.net/article/85852.htm,感谢原作者分享

volatile原意是“易变的”,但这种解释简直有点误导人,应该解释为“直接存取原始内存地址”比较合适。

“易变”是相对与普通变量而言其值存在编译器(优化功能)未知的改变情况(即不是通过执行代码赋值改变其值的情况),而是因外在因素引起的,如多线程,中断等。编译器进行优化时,它有时会取一些值的时候,直接从寄存器里进行存取,而不是从内存中获取, 这种优化在单线程的程序中没有问题,但到了多线程程序中,由于多个线程是并发运行的,就有可能一个线程把某个公共的变量已经改变了,这时其余线程中寄存器的值已经过时,但这个线程本身还不知道,以为没有改变,仍从寄存器里获取,就导致程序运行会出现未定义的行为。并不是因为用volatile修饰了的变量就是“易变”了,假如没有外因,即使用volatile定义,它也不会变化。而加了volatile修饰的变量,编译器将不对其相关代码执行优化,而是生成对应代码直接存取原始内存地址。

一般说来,volatile用在如下的几个地方:

1. 中断服务程序中修改的供其它程序检测的变量需要加volatile2. 多任务环境下各任务间共享的标志应该加volatile3. 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;

后续计划写一个C++例程,分析在优化后编译成的汇编指令(第二步用gdb调试探微…),本文待更新…

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ volatile关键字说明 的相关文章

  • 如何看待2021届校招薪资倒挂? 为什么互联网大厂校招的薪资一年比一年高?

    点击上方 xff0c 选择星标或置顶 xff0c 不定期资源大放送 xff01 阅读大概需要15分钟 Follow小博主 xff0c 每天更新前沿干货 导读 10月27日 xff0c 网传美团今年应届生年薪 35w 43 xff0c 严重倒
  • 搞深度学习用什么笔记本最好?这份报告给你选出了性价比之王

    点击上方 xff0c 选择星标或置顶 xff0c 不定期资源大放送 xff01 阅读大概需要10分钟 Follow小博主 xff0c 每天更新前沿干货 选自 Medium 作者 Towards AI Team 转自 机器之心 编辑 陈萍 杜
  • CVPR2021 最新论文汇总(附论文链接/代码/解析)[持续更新]

    点击上方 xff0c 选择星标或置顶 xff0c 不定期资源大放送 xff01 阅读大概需要5分钟 Follow小博主 xff0c 每天更新前沿干货 本文整理了CVPR2021最新的论文汇总情况 xff0c 主要包括 xff1a Trans
  • 业内视频超分辨率新标杆!快手&大连理工研究登上CVPR 2022

    来源 xff1a 量子位 导读 本文从一种新的视角统一了视频超分辨中的低分辨率和高分辨率的时序建模思路 xff0c 提出了一种新的视频超分辨框架 xff0c 以较小的计算代价 xff0c 充分利用了低分辨和高分辨率下的时序互补信息 已在多个
  • 【收藏】时间序列预测入门必读的4篇论文

    时间序列预测是一个发展历史悠久的技术领域 xff0c 近些年随着机器学习算法和深度学习算法的应用 xff0c 时间序列预测方法在越来越多的传统领域焕发光彩 入门必读的4篇论文见文末 01 传统统计学算法和ML DL算法的优劣 时间序列预测常
  • 一文详解GNN最新研究方向 | 论文合集

    22年初 xff0c 图神经网络 xff08 GNN xff09 成为互联网圈的流行语 xff0c 一整年 xff0c 关于GNN的研究热情日益高涨 xff0c 其已经成为各大深度学习顶会的研究热点 GNN处理非结构化数据时的出色能力使其在
  • 安装ROS环境时的常见问题及解决办法

    安装ROS环境 a 换源 span class token comment 备份原来的sources list span span class token function sudo span span class token functi
  • 这段视频火爆外网,谷歌把AI视频造假搞得太真太简单了

    来源 xff1a 量子位 家人们 xff0c AI做视频这事今天又被推向了舆论的风口浪尖 起因是有人在网上发布了这么一只小企鹅的视频 xff1a 而这个近50秒视频的诞生 xff0c 靠的仅仅是6句话 xff01 陆陆续续的 xff0c 网
  • GPT-4 Copilot X震撼来袭!AI写代码效率10倍提升,码农遭降维打击

    来源 xff1a 新智元 微软真的杀疯了 xff01 上周 xff0c 微软刚用GPT 4升级了Office办公全家桶 xff0c 还没等人们反应过来 xff0c 微软又来抄码农的家了 今天 xff0c GitHub官宣 xff1a 基于G
  • 陈天奇等人新作引爆AI界

    来源 xff1a 机器之心 我把大语言模型下到我的 iPhone 上 xff0c 它神奇地跑起来了 xff01 对于陈天奇等人开源的新技术 xff0c 大家一致的评论是 Amazing 最近人们都在研究 ChatGPT xff0c 大语言模
  • 原C9高校副校长,履新上海市教委!

    4月26日 xff0c 上海市十六届人大常委会第二次会议审议并表决通过了人事任免事项 xff0c 决定任命周亚明为上海市教育委员会主任 据悉 xff0c 周亚明曾任复旦大学副校长 党委常务副书记 周亚明 周亚明 xff0c 男 xff0c
  • 太震撼了,几行代码,GPT-3变ChatGPT!

    来源 xff1a 新智元 快速定制模型的LLM引擎Lamini来了 xff0c 开发者狂喜 xff01 ChatGPT虽好 xff0c 但始终有门槛 通常 xff0c 只有拥有AI博士学位的大型机器学习团队 xff0c 才能这样训练一个模型
  • 生产者-消费者问题-Java实现

    生产者 消费者问题在JAVA中实现的方法有多种 xff0c 我写的是用 wait notify 实现 xff1b wait notify 方法是基类 object 的两个方法 wait 方法 xff1a 当缓冲区已满 空时 xff0c 生产
  • 微服务远程访问找不到组件注入

    UnsatisfiedDependencyException Error creating bean with name orderController Unsatisfied dependency expressed through fi
  • Ubuntu系统用户登陆陷入登陆循环—权限、.xsession-errors、内存不足问题

    问题 xff1a ubuntu18输入密码正确 xff0c 但一直在登录界面循环进不去 参考 xff1a ubuntu18登录界面循环进不去 ubuntu18 xsession errors文件过大 一 解决方法 权限问题 问题 xff1a
  • JAVA继承

    知识点总结 JAVA继承 一 继承的概念 继承是java面向对象编程技术的一块基石 xff0c 因为它允许创建分等级层次的类 继承就是子类继承父类的特征和行为 xff0c 使得子类对象 xff08 实例 xff09 具有父类的实例域和方法
  • java面向对象

    知识点总结 面向对象 1 instanceof 用来判断引用类型 2 Java中定义 类 的一个固定格式写法 修饰符 class 类名 零到多个构造器 零到多个成员变量 零道多个方法 零到多个初始化块 修饰符 public private
  • 小白视角看ros_openvino_toolkit

    计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决 Any problem in computer science can be solved by anther layer of indirection 1 背景 在AI落地应用
  • sql新增查改

    一 新增数据 1 插入所有字段 xff0c 必须按顺序依次插入 xff1b 如果插入的 数据个数 少于 字段个数 则会报错 INSERT INTO sys user 字段 字段 字段 values 1 rose 22 2 插入部分字段 xf
  • Session和Cookied区别

    知识点总结 xff1a 总结1 如何解决HTTP协议无状态问题 Http是无状态的协议 客户 每次读取web页面时 服务器都是打开新的连接 而且服务器也不会自动维护客服的上下文信息 那么要怎么才能在多次请求之间共享信息呢 比如现实网上商店中

随机推荐

  • 东方之星酒店管理项目技术总结

    文献种类 xff1a 项目研发技术文献 xff1b 开发工具与关键技术 xff1a IDEA 2021 1 SQLyog 64 bit JAVA 作者 xff1a 周秋梅 xff1b 年级 xff1a 1901 xff1b 撰写时间 xff
  • web的两种跳转方式

    知识点总结 xff1a 在进行web开发时 xff0c 跳转是最常见的 xff0c 今天在这里来学习下2种跳转 xff1a 第一种是request getRequestDispatcher forward request response
  • yaml和properties之间区别

    知识点总结 xff1a 一 yaml和properties 他俩是干啥的 xff1f yaml和properties都是用来写配置文件的 xff0c 可以向bean中注入咱们提前写好的数据 他俩有啥区别 xff1f yaml是springb
  • springBoot入门

    1 1 springBoot简介 Spring Boot是Spring家族的一个子项目 xff0c 其设计初衷是为了简化Spring配置 xff0c 从而可以轻松构建独立运 行的程序 xff0c 并极大提高开发效率 Spring Boot是
  • SpringBoot视图技术

    1 1 SpringBoot视图技术 Spring Boot是Spring家族的一个子项目 xff0c 其设计初衷是为了简化Spring配置 xff0c 从而可以轻松构建独立运 行的程序 xff0c 并极大提高开发效率 Spring Boo
  • 关于thymeleaf 报错org.attoparser.ParseException: Could not parse as expression

    关于thymeleaf 报错信息 org thymeleaf exceptions TemplateProcessingException Could not parse as expression 34 checkbox true fix
  • C++练习25:计算输入字符串中每个字母出现的次数

    C 43 43 练习25 xff1a 计算输入字符串中每个字母出现的次数 题目输出示例代码方法1 xff1a 方法2 xff1a 题目 计算输入字符串中每个字母出现的次数 xff0c 不区分大小写 输入格式 xff1a 输入长度不超过100
  • Python 拉取远程服务器资源到本地

    因为功能需要 需要从远端服务器拉取文件资源到本地 写了一个简单脚本 功能没有很复杂就不写相关解释了 span class token keyword import span paramiko span class token keyword
  • ros_openvino_toolkit环境搭建纪实

    文章目录 先决条件一 配置环境1 安装Open VINO 2020 3 194环境a 在Ubuntu系统上无sudo权限命令行安装OpenVINOb 验证安装成功c 安装MO 2 安装ROS环境a 换源b 添加ros latest list
  • python怎么限制输入0到100的范围,思路及方法

    python限制输入0到100的范围的思路 要用python设计一个程序 xff0c 不仅可以满足限制用户输入0到100的范围 xff0c 而不仅仅是提示 xff0c 而且当用户输入超出范围的值的时候 xff0c python程序会给出提示
  • linux上 防火墙查看,添加,关闭,开放端口等命令

    1 查看防火墙状态如下 xff1a 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火
  • 使用Python自动给视频逐帧截图

    背景 数据集采集不单有图片格式 xff0c 也有视频格式 xff0c 有时我们需要根据采集来的视频生成图片 xff0c 再进行标注 所以这里我们使用Python自动给视频逐帧截图 注意 xff1a 由于摄像机录制的视频大多是XMF格式 xf
  • FTP文件服务器部署

    以下步骤以在Ubuntu系统中部署为例 1 安装vsftpd软件 在Linux系统中 xff0c 可以使用包管理器来安装vsftpd软件 sudo apt get install vsftpd 2 配置vsftpd软件 安装完vsftpd软
  • python扫描端口

    什么是端口扫描 定义 xff1a 对一段端口或指定的端口进行扫描 目的 xff1a 通过扫描结果可以知道一台计算机上都提供了哪些服务 xff0c 然后就可以通过所提供的这些服务的己知漏洞就可进行攻击 原理 xff1a 当一个主机向远端一个服
  • SWT/ANR问题-- OTA 升级 从Android P 到 Q 发生 watchdog

    问题描述 通过OTA从Android P升级到Android Q后 手机会出现反复重启 Logcat logs 06 10 12 38 58 496 4369 4369 I SystemServer StartUsageService 06
  • Webpack中使用ProvidePlugin插件全局引入jquery报错

    报错提示 xff1a error 39 39 is not defined no undef webpack config js设置 xff1a new Webpack ProvidePlugin 39 jquery 39 jQuery 3
  • Java 异常处理

    Java是一种面向对象的编程语言 xff0c Java程序在运行时可能会发生各种异常 xff0c 如空指针异常 文件读取异常 算术异常等 在Java中 xff0c 异常是指程序运行时可能会发生的错误 xff0c 例如输入不正确 内存不足等等
  • smb连接错误: 连接到服务器时出现问题。请检查服务器名称或IP地址,然后再试一次。如果问题持续发生,请联系系统管理员

    大家在用Ipad或者Iphone连接电脑的共享文件夹时如果出现 连接到服务器时出现问题 请检查服务器名称或IP地址 xff0c 然后再试一次 如果问题持续发生 xff0c 请联系系统管理员 解决办法 xff1a 关闭公用网络防火墙 Ps 如
  • Linux部署lamp(centos 7),照做就行

    大家好 xff0c 今天我们来分享一下Linux上部署lamp lamp指的是Linux 43 Apache 43 MySQL数据库 43 php几者相结合的web框架结构 虽然我在这之前 xff0c 就写过有关于这方面的博客 xff0c
  • C++ volatile关键字说明

    内容摘抄自https www jb51 net article 85852 htm xff0c 感谢原作者分享 volatile原意是 易变的 xff0c 但这种解释简直有点误导人 xff0c 应该解释为 直接存取原始内存地址 比较合适 易