我记得读过在方法中声明的静态变量不是线程安全的。(参见Todd Gardner提到的 Meyer 的单身呢?)
Dog* MyClass::BadMethod()
{
static Dog dog("Lassie");
return &dog;
}
我的库为最终用户生成 C++ 代码,以作为其应用程序的一部分进行编译。它生成的代码需要以线程安全的跨平台方式初始化静态变量。我想用来boost::call_once
对变量初始化进行互斥,但最终用户会暴露于 Boost 依赖项。
有没有办法让我做到这一点,而不需要对最终用户产生额外的依赖?