class A
{
A()
{
std::cout << "构造\n";
}
public:
static const A& GetA()
{
static A obj;
return obj;
}
};
这个是真的线程安全吗?
class A
{
A()
{
std::cout << "构造\n";
}
public:
static const A& GetA()
{
static A obj;
return obj;
}
};
这个是真的线程安全吗?
C++11之前是不安全的,但是C++11下这样做是线性安全的!对于local static对象,其初始化在第一次执行到该对象的初始化语句,可能多个线程同时到达初始化这里,C++11规定了:在一个线程开始local static对象的初始化后到完成初始化前,其他线程执行到初始化local static的语句就会等待,直到local static初始化完成。这样就保证了线性安全!如有用,请采纳,谢谢!