gpt4 book ai didi

c++ - 为什么会存在 volatile ?

转载 作者:IT老高 更新时间:2023-10-28 11:27:31 24 4
gpt4 key购买 nike

volatile 关键字有什么作用?在 C++ 中它解决了什么问题?

就我而言,我从来没有故意需要它。

最佳答案

volatile 如果您正在从内存中的某个位置读取,例如,一个完全独立的进程/设备/任何可能写入的位置,则需要。

我曾经在直接 C 语言的多处理器系统中使用双端口 ram。我们使用硬件管理的 16 位值作为信号量来了解其他人何时完成。基本上我们是这样做的:

void waitForSemaphore()
{
volatile uint16_t* semPtr = WELL_KNOWN_SEM_ADDR;/*well known address to my semaphore*/
while ((*semPtr) != IS_OK_FOR_ME_TO_PROCEED);
}

如果没有 volatile,优化器会认为循环是无用的(这家伙从不设置值!他疯了,摆脱那个代码!)我的代码将在没有获取信号量的情况下继续执行,导致以后有问题。

关于c++ - 为什么会存在 volatile ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72552/

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