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