執行緒安全的單例模式

2021-09-12 02:38:17 字數 1247 閱讀 2043

#include //linux中使用執行緒

#if 0

單例模式指乙個類只允許有乙個例項,型別分為懶漢模式和餓漢模式

實現方法:建構函式宣告為private或protect防止被外部函式例項化,

內部儲存乙個private static的類指標儲存唯一的例項,例項的動作由一

個public的類方法代勞,該方法也返回單例類唯一的例項

#endif

//懶漢模式 用到的時候才去初始化

class singleton

private:

//倆個禁止可加可不加

singleton(const singleton&) {}; //禁止拷貝

singleton& operator=(const singleton&) {}; //禁止賦值

static singleton* m_pinstance;

static pthread_mutex_t mutex;

public:

static singleton* getinstance();

};singleton* singleton::m_pinstance = null;

pthread_mutex_t singleton::mutex = pthread_mutex_initialzer;

singleton* singleton::getinstance()

pthread_mutex_unlock(&mutex);

} return m_pinstance;

}//餓漢模式 單例類定義的時候就進行初始化

//因為定義時就已經初始化完成,所以多執行緒環境下,執行緒是安全的

class singleton

private:

//倆個禁止可加可不加

singleton(const singleton&) {}; //禁止拷貝

singleton& operator=(const singleton&) {}; //禁止賦值

static singleton* m_pinstance;

public:

static singleton* getinstance();

};singleton* singleton::m_pinstance = new singleton;

singleton* singleton::getinstance()

int main()

執行緒安全的單例模式

廢話不多說,常用的 積澱下來。一 懶漢模式 即第一次呼叫該類例項的時候才產生乙個新的該類例項,並在以後僅返回此例項。需要用鎖,來保證其執行緒安全性 原因 多個執行緒可能進入判斷是否已經存在例項的if語句,從而non thread safety.使用double check來保證thread safe...

執行緒安全的單例模式

單例模式是為了保證乙個類只有乙個例項而且易於外界訪問。所以一般只有把建構函式,拷貝函式,析構函式,賦值函式,變數名變為私有。再用乙個get函式訪問提供介面即可。考慮執行緒安全就要加鎖。一 懶漢模式 1 靜態成員例項的懶漢模式 class singleton public static singlet...

執行緒安全的單例模式

在我們專案中,很多時候需要程式只存在乙個唯一例項。通常在專案中我會把單例模式寫成如下形式 public class singleton public static singleton getinstance return msingleton 通常以這種形式返回乙個類的唯一例項,然而在android...