#include <iostream>
using namespace std;
class Singleton {
private:
static pthread_mutex_t mtx;
static Singleton *instance;
Singleton() {}
~Singleton() {}
public:
static Singleton* getInstance ()
{
if(instace == nullptr)
{
pthread_mutex_lock(mtx);
if(instance == nullptr)
{
intstance == new Singleton();
}
pthread_mutex_lock(mtx);
}
return instance;
}
};
pthread_mutex_t Singleton::mtx == PTHREAD_MUTEX_INITIALIZER;
Singleton* Singleton::instance = nullptr;
int main()
{
Singleton* test = Singleton::getInstance();
}
饿汉:
class singleton
{
protected:
singleton()
{}
private:
static singleton* p;
public:
static singleton* initance();
};
singleton* singleton::p = new singleton;
singleton* singleton::initance()
{
return p;
}
参考资料: