我想在主线程上初始化一些静态数据。
int32_t GetFoo(ptime t)
{
static HugeBarData data;
return data.Baz(t);
}
int main()
{
GetFoo(); // Avoid data race on static field.
// But will it be optimized away as unnecessary?
// Spawn threads. Call 'GetFoo' on the threads.
}
如果编译器可能决定删除它,我怎么能强制它留在那里?
最佳答案
C++ 编译器可以优化掉的唯一副作用函数是不必要的构造函数调用,尤其是复制构造函数。
参见 Under what conditions does C++ optimize out constructor calls?
关于c++ - 如果功能有副作用,可以优化掉吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24559875/