C 實現乙個執行緒安全的單例工廠

2021-09-22 19:18:50 字數 1147 閱讀 9946

我們見到經常有人用 static 區域性物件的方式實現了類似單例模式,最近發現一篇文章明確寫明 編譯器在處理  static區域性變數的時候 並不是執行緒安全的 !!!

於是實現了乙個單例工廠  並且是執行緒安全的

#ifndef singletonfactory_h

#define singletonfactory_h

#include "windows.h"

#include namespace tools

std::auto_ptr& getinstance();

static singletonfactory* createsingletonfactory();

private:

singletonfactory()

std::auto_ptr__singletonobj;

critical_section __criticalsection;

};//初始化建立 後續在多執行緒中使用

//還有另一種寫法是單獨的函式直接返回內部單例包裝靜態成員在 多執行緒情況下不安全

//singletonfactory::createsingletonfactory().getinstance();

templatesingletonfactory* singletonfactory::createsingletonfactory()

//工廠例項

templatestd::auto_ptr& singletonfactory::getinstance()

return __singletonobj;}}

#endif // singletonfactory_h

測試** 

singletonfactory*singleton1=singletonfactory::createsingletonfactory();

singleton1->getinstance()->x=100;

coutxy=200;

coutxy<*singleton2=singletonfactory::createsingletonfactory();

singleton2->getinstance()->x=100;

coutxy=200;

coutxy<

手寫乙個執行緒安全的單例工廠模式

簡單介紹一下倆個模式 單例模式 乙個類只會被產生乙個靜態的物件。工廠模式 構造方法不對外提供。提供乙個方法,包括產生物件和對物件的初始化。同時保證多執行緒獲取物件時,獲取的是同乙個物件。public class resource public resource newinstance return ...

C 實現乙個執行緒安全且高效單例類

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

乙個執行緒安全的單例模式測試

單例模式,一般我喜歡這樣實現 class singletest singletest singletest instance singletest singletest singletest singletest 然後這樣用 singletest ts singletest instance 這麼實...