单例模式有多种写法,下面用模板类以三种方式实现单例模式。
1.懒汉模式
#include <iostream>
#include <stdio.h>
#include <pthread.h>
//懒汉模式
template <typename T>
class Singleston
{
public:
static T* GetInstance(){
if(NULL == instance_)
{
pthread_mutex_lock(&g_mutex);
if(NULL == instance_)
{
instance_ = new T;
}
pthread_mutex_unlock(&g_mutex);
}
return instance_;
}
private:
static T * volatile instance_;
static pthread_mutex_t g_mutex;
};
template <typename T>
T* volatile Singleston<T>::instance_ = NULL;
template <typename T>
pthread_mutex_t Singleston<T>::g_mutex = PTHREAD_MUTEX_INITIALIZER;
2.饿汉模式
//饿汉模式
template <typename T>
class Singleston
{
public:
static