C++如下的懒汉模式是否线程安全?

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初始化完成。这样就保证了线性安全!如有用,请采纳,谢谢!