參考鏈接:
https://www.cnblogs.com/sunchaothu/p/10389842.html
版本1:使用靜態局部變量,缺點只能在C++11以上環境中運行
class Singleton{
public:
~Singleton() {
cout<<"deconstruct"<<endl;
}
static Singleton& getInstance() {
static Singleton instance;
return instance;
}
private:
Singleton() {
cout<<"construct"<<endl;
}
};
版本二:懶漢式加鎖
class Singleton
{
private:
static Singleton* m_instance;
static pthread_mutex_t mutex;
Singleton(){}
public:
static Singleton* getInstance();
};
Singleton* Singleton::getInstance()
{
if(NULL == m_instance)
{
pthread_mutex_lock(&mutex);
if(NULL == m_instance)
{
m_instance = new Singleton;
}
pthread_mutex_unlock(&mutex);
}
return m_instance;
}