老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)

C++如何實現(xiàn)一個線程安全的單例工廠

這篇文章主要介紹C++如何實現(xiàn)一個線程安全的單例工廠,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營銷網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)哈爾濱,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

  C++實現(xiàn)一個線程安全的單例工廠實現(xiàn)代碼

我們見到經(jīng)常有人用 static 局部對象的方式實現(xiàn)了類似單例模式,最近發(fā)現(xiàn)一篇文章明確寫明 編譯器在處理  static局部變量的時候 并不是線程安全的 !!!

http://blogs.msdn.com/b/oldnewthing/archive/2004/03/08/85901.aspx    

于是實現(xiàn)了一個單例工廠  并且是線程安全的

#ifndef SINGLETONFACTORY_H 
#define SINGLETONFACTORY_H 
#include "windows.h" 
#include  
namespace Tools 
{ 
templateclass SingletonFactory 
{ 
public: 
  virtual ~SingletonFactory() 
  { 
   ::DeleteCriticalSection(&__criticalSection); 
  } 
  std::auto_ptr& GetInstance(); 
  static SingletonFactory* CreateSingletonFactory(); 
private: 
  SingletonFactory() 
  { 
    ::InitializeCriticalSection(&__criticalSection); 
  } 
  std::auto_ptr __singletonObj; 
  CRITICAL_SECTION __criticalSection; 
}; 
 
//初始化創(chuàng)建 后續(xù)在多線程中使用 
//還有另一種寫法是單獨的函數(shù)直接返回內(nèi)部單例包裝靜態(tài)成員在 多線程情況下不安全 
//SingletonFactory::CreateSingletonFactory().GetInstance(); 
template SingletonFactory* SingletonFactory::CreateSingletonFactory(){ 
  static SingletonFactory temObj; 
  return &temObj; 
} 
//工廠實例 
template std::auto_ptr& SingletonFactory::GetInstance() 
{ 
  if(__singletonObj.get()==0) 
  { 
    ::EnterCriticalSection(&__criticalSection); 
    if(__singletonObj.get()==0) 
      __singletonObj=std::auto_ptr(new T); 
    ::LeaveCriticalSection(&__criticalSection); 
  } 
  return __singletonObj; 
} 
} 
 
#endif // SINGLETONFACTORY_H

測試代碼

SingletonFactory*singleton1=SingletonFactory::CreateSingletonFactory(); 
singleton1->GetInstance()->x=100; 
cout<GetInstance()->x<GetInstance()->y=200; 
cout<GetInstance()->x<GetInstance()->y<*singleton2=SingletonFactory::CreateSingletonFactory(); 
singleton2->GetInstance()->x=100; 
cout<GetInstance()->x<GetInstance()->y=200; 
cout<GetInstance()->x<GetInstance()->y<

以上是“C++如何實現(xiàn)一個線程安全的單例工廠”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


本文標(biāo)題:C++如何實現(xiàn)一個線程安全的單例工廠
轉(zhuǎn)載來于:http://www.xueling.net.cn/article/picegp.html

其他資訊

在線咨詢
服務(wù)熱線
服務(wù)熱線:028-86922220
TOP
主站蜘蛛池模板: 秋霞国产精品一区二区 | 欧美激情在线精品一区二区三区 | 岛国AV无码免费无禁网站 | av毛片在线看 | 久久不见久久见中文字幕免费 | 欧美bbw极品另类 | 久久久久.com | 一级片网页| 国产精品日本一区二区在线播放 | 牛牛视频一区二区三区 | 国产亚洲v| 国产一区二区久久 | 97国产精品| 国产亚洲日韩一区二区三区 | 国产老师做www爽爽爽视频 | 成年免费人性视频 | 亚洲午夜免费福利视频 | 在线看你懂得 | 亚洲a一级视频 | 色老板美国在线观看 | 亚洲爆乳精品无码一区二区 | 波多野结衣中文AV无码专区 | 亚洲一区二区三区四区五区不卡 | 欧美精品一区在线观看 | 啊灬啊灬啊灬快灬高潮了听书 | 精品香蕉久久久爽爽 | 忘忧草在线影院www日本韩国 | 欧美一级二级三级视频 | 天天躁日日躁狠狠躁av麻豆男男 | 成人影院在线视频 | 天堂国产一区 | 色戒2小时38分无删除版 | 好紧好湿好爽免费视频 | 国产一区二区三区美女 | 国产成人福利在线观看 | 九色在线78m| 福利视频欧美一区二区三区 | 91在线视频 | av中文字幕无码免费看 | 国产日韩在线观看视频 | 国产第一页福利 |