C 設計模式 singleton 單例模式

2021-09-08 04:33:40 字數 968 閱讀 8070

這個設計模式主要目的是想在整個系統中僅僅能出現乙個類的例項。這樣做當然是有必定的。比方你的軟體的全域性配置資訊,或者是乙個factory,或是乙個主控類,等等。

你希望這個類在整個系統中僅僅能出現乙個例項。

一、呼叫pthread_once()實現了乙個執行緒安全的版本號:

**:

template class singleton

static void init()//加了一層封裝,適應不同型別的初始化函式

private:

singleton();

~singleton();

static pthread_once_t ponce_;

static t * value_;

};template pthread_once_t singleton::ponce_=pthread_once_init;//linux下初始化為0;

template t* singleton::value_=null;

二、雙重檢查加鎖法

class singleton

}return m_instance;

} static void destoryinstance() }

int gettest()

private:

singleton()

static singleton *m_instance;

int m_test;

};singleton *singleton ::m_instance = null;

雙重檢查加鎖的優勢在於:

(1)沒有例項化singleton時,全部呼叫靜態函式getinstance的執行緒都會堵塞在lock上,僅僅有第乙個呼叫者能獲取該lock,例項化該類。

(2)已經例項化singleton時。全部呼叫者執行緒就不用排隊獲取lock。直接獲取例項化物件

C 設計模式一 (單例模式singleton)

c 單例設計模式 一 引言 單例設計模式屬於建立型模式。什麼情況下用到單一設計模式呢?1 在軟體中,經常有一些特殊的類,必須保證它僅僅例項唯一乙個物件。才能保證它們的邏輯正確性及良好的效率。2 當然出於上面的乙個目的,我們要限制使用者使用new關鍵字,否則無法控制 唯一物件 的要求。我們更不能要求使...

Singleton單件設計模式

單例模式也稱為單件模式 單子模式 其應用場景是程式中需要寫個類,而這個類只能產生乙個例項。這個例項在全域性被所有類都能夠呼叫到,這個時候我們所使用的就是單例模式。該例項被所有程式模組共享。有很多地方需要這樣的功能模組,如系統的日誌輸出等。而乙個例項的實現方式有很多種,可以通過全域性變數來實現,但這樣...

設計模式 單例Singleton

定義 確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。使用場景 確保某個類有且只有乙個物件的場景,例如建立乙個物件需要消耗的資源過多,如要訪問 io 和資料庫等資源。以earth為例,簡單的單例模式可以寫成如下形式。public class earth public earth g...