劍指offer 面試題2:實現單例模式

參考鏈接:
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;  
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章