gpt4 book ai didi

c++ - volatile 在 C++ 的单线程应用程序中有用吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:31 26 4
gpt4 key购买 nike

如标题所说 - volatile 在单线程编程的上下文中是否有用?我知道它用于确保变量的值始终在内存中实际检查,所以在任何情况下该值可能会以应用程序/编译器不会注意到的方式更改(在 ST 应用程序中)?

我让这个问题与语言无关,因为我不知道它们之间的任何差异会影响对这个问题的回答。但如果有的话请告诉我。

编辑:正如有人向我指出的那样,这个问题与语言无关。然后我将其设为特定于 C++(我读到 C++ 版本也存在差异,但我希望它们不会大到足以使这个问题过于宽泛)。

最佳答案

这是 C 和 C++ 的答案

是的!当变量映射到硬件寄存器(例如 I/O 设备)时。硬件独立于应用修改寄存器。

例子:

extern volatile uint32_t MY_DEVICE_START; // write-only register
extern volatile const uint32_t MY_DEVICE_STATUS; // read-only register
extern volatile uint32_t MY_DEVICE_DATA; // read-write register

...
MY_DEVICE_DATA = 42; // send input to the device
MY_DEVICE_START = 1; // start the device
while (MY_DEVICE_STATUS == 0) {} // busy-wait for the device to finish
int result = MY_DEVICE_DATA; // read output from the device
...

至少在 C/C++ 中这是它的主要原因。 Volatile is even not recommended for multi-threaded use .

关于c++ - volatile 在 C++ 的单线程应用程序中有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35198565/

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