我知道这是一个经常被问到的问题,但由于有很多变种,我想重新陈述它,并希望有一个反映当前状态的答案.就像是
Logger& g_logger() {
static Logger lg;
return lg;
}
Run Code Online (Sandbox Code Playgroud)
变量lg的构造函数是否保证只运行一次?
我从以前的答案中知道,在C++ 03中,这不是; 在C++ 0x草案中,这是强制执行的.但我想要一个更明确的答案
根据以下资源,在C++(特别是Visual C++)中,作用域静态变量初始化不是线程安全的.但是,全局静态变量是安全的.
http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx
那么,遵循静态成员变量的代码是否是线程安全的?
class TestClass
{
public:
static MyClass m_instance;
}
Myclass TestClass::m_instance;
Run Code Online (Sandbox Code Playgroud)
提前致谢!