Var*_*una 24 c++ static multithreading member-variables
根据以下资源,在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)
提前致谢!
Mar*_*tos 35
这更像是函数范围的静态变量与其他类型的静态变量的问题,而不是范围与全局变量.
所有非函数范围的静态变量都是在main()之前构造的,而只有一个活动线程.函数范围静态变量是在第一次调用其包含函数时构造的.该标准没有提到在多线程上调用函数时如何构造函数级静态的问题.但是,我使用的每个实现都使用构造函数周围的锁(带有两次检查的标志)来保证线程安全.