我在这段代码中看到了一个奇怪的问题:
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/