根据以下资源,在 C++(特别是 Visual C++)范围内的静态变量初始化不是线程安全的。但是,全局静态变量是安全的。
Thread-safe static variables without mutexing?
http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx
那么,下面带有静态成员变量的代码是线程安全的吗?
class TestClass
{
public:
static MyClass m_instance;
}
Myclass TestClass::m_instance;
提前致谢!
最佳答案
更多的是函数作用域静态变量与其他所有类型的静态变量的问题,而不是作用域与全局变量的问题。
所有非函数作用域的静态变量都是在main()之前构造的,而只有一个事件线程。函数范围的静态变量是在第一次调用它们的包含函数时构造的。该标准对在多个线程上调用函数时如何构造函数级静态变量的问题保持沉默。但是,我使用过的每个实现都使用构造函数周围的锁(带有两次检查标志)来保证线程安全。
关于c++ - C++ 静态成员变量初始化线程安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1962880/