C++使用pthread_once实现单例模式模板类

C++单例模式:

//singleton.h
template
class Singleton : noncopyable
{
public:
    static T& Instance()
    {
        pthread_once(&ponce_, &Singleton::init);
        return *value_;
    }
private:
    Singleton();
    ~Singleton();

    static void init()
    {
        value_ = new T();
    }

private:
    static pthread_once ponce_;
    static T* value_;
};

//注意:必须头文件中定义static变量

template 
pthread_once_t Singleton::ponce_ = PTHREAD_ONCE_INIT;

template
T* Singleton::value_  = NULL;

使用方法:

MyClass&  mc = Singleton::Instance();

noncopyable基类实现地址:https://blog.csdn.net/xu215740578/article/details/97388859

本文源码学习自muduo

你可能感兴趣的:(C/C++,设计模式)