单例模式分为懒汉和饿汉模式。
一、懒汉模式
懒汉模式即使用时才创建资源。非线程安全的就不写了,总结了三种线程安全的实现方式。
1.常规实现(手动释放资源、实现deleteInstance)
class Singleton{
public:
static Singleton* getInstance();
//销毁实例,进程结束时调用
static void deleteInstance();
private:
//构造函数、析构函数、拷贝构造、拷贝赋值设为私有
//防止外部构造、析构、拷贝、赋值
Singleton(){
}
~Singleton(){
}
Singleton(const Singleton& rhs);
Singleton& operator=(const Singleton& rhs);
private:
static pthread_mutex_t m_Mutex;
static Singleton* m_SingletonInstance;
};
Singleton* Singleton::m_SingletonInstance