gpt4 book ai didi

c++ - volatile 关键字有什么用?

转载 作者:行者123 更新时间:2023-11-30 16:12:36 25 4
gpt4 key购买 nike

C/C++ 中 volatile 关键字有什么用?声明变量 volatile 和不将其声明为 volatile 有什么区别?

最佳答案

变量上的 volatile 限定符告诉编译器,每当您访问该变量时,都必须从内存中加载其值,并且编译器可能不会从之前存储的内容中假设该值的任何内容生效。

因此,每当遇到变量可能具有当前“执行线程”(广义上)中无法预见的值的情况时,它都是合适的。这包括:

  • 硬件寄存器
  • 信号处理程序中的状态变量
  • 之后使用的实时变量意外跳转,例如gotoswitch/case,或者更重要的是,setjmp/longjmp
对于对未互斥访问的线程共享变量的原子访问,

volatile 也是必要的(但还不够!)。为此, volatile 决不足以保证原子访问,即使它只是为了读取。为此,您必须使用未由当前 C 标准 C99 的抽象机建模(或接口(interface))的 CPU 特殊指令。下一个标准 C1X 应该有这样的原语。

关于c++ - volatile 关键字有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com