我一直在寻找SO和MSDN的答案来回答这个问题,但似乎无法找到明确的最终答案......
我知道它是在C++ 11标准中并且当前的GCC版本就是这样的,但VC2010目前是否保证了本地静态变量初始化的线程安全性?
即:这对VC2010有线程安全吗?
static S& getInstance()
{
static S instance;
return instance;
}
Run Code Online (Sandbox Code Playgroud)
...如果没有,目前使用VC2010在C++中获得线程安全的单例实现的最佳实践是什么?
编辑:正如Chris Betti的回答所指出的,VC2010没有实现本地静态变量init的线程安全性.