執行緒安全的懶漢 餓漢單例模式的實現

2021-10-04 17:54:21 字數 1579 閱讀 5630

#include

"pch.h"

#include

#include

using

namespace std;

/*單例模式:乙個類不管建立多少次物件,永遠只能得到該型別乙個物件的例項

a *p1 = new a();

a *p2 = new a();

a *p3 = new a();

常用到的,比如日誌模組,資料庫模組

單例模式:

餓漢式單例模式:還沒有獲取例項物件,例項物件就已經產生了

懶漢式單例模式:唯一的例項物件,直到第一次獲取它的時候,才產生

*/#if 0

// 執行緒安全的懶漢式單例模式

class

singleton

private

:singleton()

// #1 建構函式私有化

singleton

(const singleton&)=

delete

; singleton&

operator=(

const singleton&)=

delete;}

;int

main()

#endif

#if 0

std::mutex mtx;

// 懶漢式單例模式 => 是不是執行緒安全的呢? => 執行緒安全的懶漢式單例模式

class

singleton

}return instance;

}private

:static singleton *

volatile instance;

// #2 定義乙個唯一的類的例項物件

singleton()

// #1 建構函式私有化

singleton

(const singleton&)=

delete

; singleton&

operator=(

const singleton&)=

delete;}

;singleton*

volatile singleton::instance =

nullptr

;int

main()

#endif

#if 0

// 餓漢式單例模式 一定是執行緒安全的

class

singleton

private

:static singleton instance;

// #2 定義乙個唯一的類的例項物件

singleton()

// #1 建構函式私有化

singleton

(const singleton&)=

delete

; singleton&

operator=(

const singleton&)=

delete;}

;singleton singleton::instance;

intmain()

#endif```

單例模式與執行緒安全單例模式(懶漢 餓漢)

直接就可以在靜態區初始化instance,然後通過getinstance返回,這種就被稱為餓漢式單例類。也有些寫法是在getinstance中new instance然後返回,這種就被稱為懶漢式單例類,但這涉及到第一次getinstance的乙個判斷問題。單例大約有兩種實現方法 懶漢與餓漢。懶漢 故...

C 的單例模式與執行緒安全單例模式(懶漢 餓漢)

1 教科書裡的單例模式 我們都很清楚乙個簡單的單例模式該怎樣去實現 建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例項,例項的動作由乙個public的類方法代勞,該方法也返回單例類唯一的例項。上 1 2 3 4 5 6 7...

C 的單例模式與執行緒安全單例模式(懶漢 餓漢)

單例模式 是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。即乙個類只有乙個物件例項。實現簡單的單例模式 建構函式宣告為private或protect防止被外部函式例項化,內部儲存乙個private static的類指標儲存唯一的例...