c++ - 发布版本中的缓存刷新问题

标签 c++ cpu

我在这段代码中看到了一个奇怪的问题:

namespace{
std::vector<int> my_vect;
}

thread1:
    sleep(5);
    my_vect.push_back(1);

main_thread:
    while(my_vect.empty());
    //do something
    return;

在调试中构建时,一切都按预期工作。在释放时,while 循环永远不会退出...

当我从忙等待变为 while 循环时:

while(my_vect.empty())
{
  sleep(1);
}

构建的版本再次开始工作。

知道为什么会这样吗?

最佳答案

是的:对共享变量的非同步访问是未定义行为,任何事情都可能发生。您观察到的行为并不是特别异常。

关于c++ - 发布版本中的缓存刷新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24369918/

相关文章:

java - CPU和线程之间有什么关系吗?

c++ - 没有 X 的 Raspberry Pi 上的 SDL2?

c++ - 在 C++ 中重载 ">>"和 "<<"

c++ - 在 C++ 中使用 memcmp 在使用 Valgrind 运行时会导致内存泄漏

c++ - QMessageBox 结果作为按钮角色

c++ - 切换并将 char 值添加到数组

x86 - AMD 支持 x2APIC 吗?

performance - WebGL 的 CPU 使用率高?

时钟、rdtsc 和 CLOCKS_PER_SEC

node.js - Node JS - 系统信息,cpuTemperature 函数不返回温度