volatile关键字的用法,volatile关键字含义

  volatile关键字的用法,volatile关键字含义

  像const一样,volatile关键字也是一个类型修饰符。修改后的变量表示会被编译器的一些未知因素(操作系统、硬件、其他线程)改变。编译器不优化数据,特殊地址可以访问。

  挥发效应?一个通用程序在运行时,运算通常交给CPU,CPU具有运算和控制两种功能,运算分为逻辑运算和算术运算。实际场景判断时,比如while语句的条件,会交给CPU进行逻辑判断。如果为真,返回1继续,如果为真,返回1继续,CPU默认优化数据。所谓优化,本质上是一种阻止优化的“内存覆盖”。

  为了不读码判断,CPU每次都会直接读取寄存器中的条件。从代码层面来说,其实CPU根本不读取数据。在汇编层,CPU会跳到自己身上。

  但是当另一个逻辑改变while中条件的值时(多线程逻辑是并行的),CPU仍然会得到寄存器中原始条件的值,导致结果异常。Volatile通过覆盖内存来防止这种情况。

  应用场景?以Linux为例:

  分析汇编代码。

  Mov:将过程放入exa

  测试:Test,这里是我和我自己之间的测试(按位and,按位OR等。)

  Jne:跳转不等于零,测试结果不为0,跳转到相关地址40040d。

  Jmp:跳到40040d(这里是跳到自己)

  总结一下,volatile就是保持内存可见性!确保每次都从内存中读取数据。

  今天到此为止。我感动了我的家人。

  原创作品来自懂蓝天的博主,

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • office2010激活密钥大全 怎么永久激活office2010
  • project2010产品密钥免费_project2010激活密钥永久激活码
  • c语言调用退出函数 c语言退出整个程序怎么写
  • c语言中怎么给函数初始化 c语言的初始化语句
  • c语言编写函数计算平均值 c语言求平均函数
  • chatgpt是什么?为什么这么火?
  • ChatGPT为什么注册不了?OpenAI ChatGPT的账号哪里可以注册?
  • OpenAI ChatGPT怎么注册账号?ChatGPT账号注册教程
  • chatgpt什么意思,什么是ChatGPT ?
  • CAD中怎么复制图形标注尺寸不变,CAD中怎么复制图形线性不变
  • cad中怎么创建并使用脚本文件,cad怎么运行脚本
  • cad中快速计算器的功能,cad怎么快速计算
  • cad中快速修改单位的方法有哪些,cad中快速修改单位的方法是
  • cad中心点画椭圆怎么做,cad轴测图怎么画椭圆
  • CAD中常用的快捷键,cad各种快捷键的用法
  • 留言与评论(共有 条评论)
       
    验证码: