執行緒安全的C 單例模式

2021-10-06 07:54:29 字數 1572 閱讀 5603

感覺自己最近一直重拾校招時候的知識。不過現在看很多問題比校招時候更容易理解,並且能夠學會運用。只求自己抓緊時間,能夠抓住每次來之不易的機會吧。

今天,寫乙個執行緒安全的c++單例模式。

1.所謂單例模式,就是讓該類只例項化乙個物件。

優點:①減少記憶體,減少資源的多重占用。

②該類例項化乙個物件,減少系統開銷。

缺點:①沒有介面,擴充套件難。

②和單一職責原則衝突。(乙個類的定義就是定義了一套邏輯,不在意例項化了幾個物件)

2.**實現單例

懶漢式單例模式

(懶漢,只有在餓的時候才去蒸饅頭)

#include

using

namespace std;

//定義乙個用於執行緒安全的鎖。

std::mutex singlemutex;

class

single()

singlemutex.

unlock()

;//解鎖

return m_single;

//返回獲取到的例項,當不同的物件呼叫get方法時,靜態的get方法直接呼叫靜態成員m_single。

}private

://多讀書還是有好處,effective c++中有一條:

//程式要幹什麼一定要宣告,比如你不讓它拷貝,你就要想辦法不讓它有預設的拷貝構造和賦值操作符方法。

//而把預設拷貝函式和賦值函式遮蔽的乙個方法就是顯示私有的宣告這兩個方法。

single()

;single

(const single& s)

; single&

operator=(

const single& s)

;private

:static single* m_single;

//之前複習了,static成員變數必須在類外賦值

}//懶漢模式,只有在getinstance的時候才構建物件,(類外實現m_single靜態成員)

single* single::m_single =

nullptr

;

餓漢模式

所謂餓漢模式,就是在物件呼叫getinstance方法之前就new乙個類物件。

#include

using

namespace std;

class

single

private

:single()

trycatch

(std::exception& e)

single

(const single& s)

; single&

operator=(

const single& s)

;private

:static single* sgl;

}//餓漢式和懶漢式的區別一

single* single::sgl =

newsingle()

;

c 多執行緒單例模式 執行緒安全C 單例模式

我對此處記錄的單例模式有一些疑問 http us library ff650316.aspx 以下 摘自該文章 using system public sealed class singleton private static volatile singleton instance private ...

C 執行緒安全的單例模式

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

C 執行緒安全的單例模式

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