C++中单例推荐写法
直接看代码
//main.cppclass Singleton
{
public:static Singleton* Instance(){//这种在C++11中是线程安全的,若多个线程试图同时初始化同一静态局部变量,则初始化严格发生一次,不需要双检查static Singleton* pInstance = new Singleton();return pInstance;}~Singleton() = default;private:Singleton() = default;Singleton(Singleton const&) = delete;Singleton& operator=(Singleton const&) = delete;
};int main()
{auto p = Singleton::Instance();return 0;
}
注意单例不仅需要考虑创建时的线程安全,还需要考虑访问时的线程安全,如果一个单例类有一些私有数据成员,在修改这些数据成员的时候,就需要考虑线程的安全,一般是在单例类内部保证线程安全,也就是在修改数据成员的时候,采用锁等同步机制。