首页 > 其他分享 >C语言学习笔记---volatile关键字

C语言学习笔记---volatile关键字

时间:2022-11-25 22:01:09浏览次数:43  
标签:变量 C语言 --- 编译器 指令 volatile 内存 优化

一段代码想要最终被计算机执行,首先需要被翻译成机器可识别和执行的指令,代码编译的过程往往包含几个步骤:

代码 -> 词法语法分析 -> 语义分析 -> 中间代码生成 -> 目标代码生成

在中间代码生成这个阶段,编译器会尝试对中间代码进行优化,通过减少无效或冗余的代码、计算强度优化等手段,以助于减少最终生成的指令数,或使用更高效的指令。也可认为由于内存访问速度远不及CPU处理速度,为提高机器整体性能

(1)在硬件上: 引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。

(2)软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。

 

二、volitile的作用

用来修饰定义变量的,告诉编译器不要对定义的变量进行编译优化,如果你的程序开启了编译优化后运行不正常了,那首先就要排查下,是否正确的使用了这个关键字。

 

三、编译器优化加不加volitile的区别

(1) 设置编译器优化 汇编执行时,不会从内存中读取变量的最新值,只会一直使用第一次读取到的值。

(2) 不设置编译器优化 汇编执行时,每次都会实时的从内存中读取变量的最新值,保证变量的值是最新的。

 

四、volatile的使用场景

1、中断服务函数中修改的供其它程序检测的变量需要加volatile;

2、多任务环境下各任务间共享的标志应该加volatile;

3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;

 

标签:变量,C语言,---,编译器,指令,volatile,内存,优化
From: https://www.cnblogs.com/zhuzi1/p/16926501.html

相关文章

  • SpringBoot整合Alibaba-Dubbo和Apache-Dubbo
    目录1Alibaba整合Dubbo1.1服务提供者1.1.1服务提供者接口1.1.2服务提供者实现类1.1.2.1项目结构图1.1.2.2pom.xml1.1.2.3服务实现类1.1.2.4配置文件1.1.2.5启动类......
  • node-webki NATIVE UI API概览
    3.1 NATIVEUIAPI概览NativeUIAPI,是提供了在代码中访问、控制应用程序界面显示的接口。和使用node.js模块类似,想要访问node-webkit的NativeUIAPI,需要先加载“nw.gui......
  • 【五期李伟平】CCF-C(CC'19)privacy preserving distributed machine learning with f
    M.A.P.Chamikara,P.Bertok,I.Khalil,D.Liu,S.Camtepe.PrivacyPreservingDistributedMachineLearningwithFederatedLearning.ComputerCommunications171(......
  • uni-ajax使用示例
    官网基于Promise的轻量级uni-app网络请求库uni-ajax官网:https://uniajax.ponjs.com安装插件市场在插件市场右上角选择使用HBuilderX导入插件或者下载插件......
  • 10-多态中调用成员的特点
    多态调用成员的特点解释理解多态调用成员的内存图......
  • 学习python-Day93
    bs4搜索文档树rombs4importBeautifulSouphtml_doc="""<html><head><title>TheDormouse'sstory</title></head><body><pid="myp"class="title">asdfasdf<b......
  • Atlassian-bitbucket RCE (CVE-2022-43781) 漏洞分析记录
    前言距离上次写文章居然过去两年多了,这两年多忙于各种事务,环境搭建官方仓库维护了各种版本的Bitbicket,我们根据漏洞描述选择一个可以触发漏洞的版本即可。然后根据镜像......
  • 爬虫学习-03
    一、bs4搜索文档树第一个参数html_doc是要解析的内容  第二个参数lxml是解析器(解析速度快一些)搜索文档树:find找一个 find_all找所有 ......
  • 《操作系统真相还原》--bochs安装及配置(粗略)
    本书的配置:virtualbox中运行linux环境centos下载virtualbox,根据教程进行基础配置。注意事项:硬盘大小推荐10G(否则后续内存修改比较繁琐),在第一次启动后,将启动设置改......
  • 04-2-京东红包雨的架构设计及源码实现(1
                               ......