一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

C++ 線程安全的單例模式

 流水晨香 2016-10-07

廢話不多說,常用的代碼積淀下來。

一、懶漢模式:即第一次調(diào)用該類實(shí)例的時候才產(chǎn)生一個新的該類實(shí)例,并在以后僅返回此實(shí)例。

需要用鎖,來保證其線程安全性:原因:多個線程可能進(jìn)入判斷是否已經(jīng)存在實(shí)例的if語句,從而non thread safety.

使用double-check來保證thread safety.但是如果處理大量數(shù)據(jù)時,該鎖才成為嚴(yán)重的性能瓶頸。

1、靜態(tài)成員實(shí)例的懶漢模式:

復(fù)制代碼
 1 class Singleton
 2 {
 3 private:
 4     static Singleton* m_instance;
 5     Singleton(){}
 6 public:
 7     static Singleton* getInstance();
 8 };
 9 
10 Singleton* Singleton::getInstance()
11 {
12     if(NULL == m_instance)
13     {
14         Lock();//借用其它類來實(shí)現(xiàn),如boost
15         if(NULL == m_instance)
16         {
17             m_instance = new Singleton;
18         }
19         UnLock();
20     }
21     return m_instance;
22 }
復(fù)制代碼

2、內(nèi)部靜態(tài)實(shí)例的懶漢模式

這里需要注意的是,C++0X以后,要求編譯器保證內(nèi)部靜態(tài)變量的線程安全性,可以不加鎖。但C++ 0X以前,仍需要加鎖。

復(fù)制代碼
 1 class SingletonInside
 2 {
 3 private:
 4     SingletonInside(){}
 5 public:
 6     static SingletonInside* getInstance()
 7     {
 8         Lock(); // not needed after C++0x
 9         static SingletonInside instance;
10         UnLock(); // not needed after C++0x
11         return instance; 
12     }
13 };
復(fù)制代碼

二、餓漢模式:即無論是否調(diào)用該類的實(shí)例,在程序開始時就會產(chǎn)生一個該類的實(shí)例,并在以后僅返回此實(shí)例。

由靜態(tài)初始化實(shí)例保證其線程安全性,WHY?因?yàn)殪o態(tài)實(shí)例初始化在程序開始時進(jìn)入主函數(shù)之前就由主線程以單線程方式完成了初始化,不必?fù)?dān)心多線程問題。

故在性能需求較高時,應(yīng)使用這種模式,避免頻繁的鎖爭奪。

復(fù)制代碼
 1 class SingletonStatic
 2 {
 3 private:
 4     static const SingletonStatic* m_instance;
 5     SingletonStatic(){}
 6 public:
 7     static const SingletonStatic* getInstance()
 8     {
 9         return m_instance;
10     }
11 };
12 
13 //外部初始化 before invoke main
14 const SingletonStatic* SingletonStatic::m_instance = new SingletonStatic;
復(fù)制代碼

(完)

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日韩欧美中文字幕av| 大香蕉伊人精品在线观看| 国产无摭挡又爽又色又刺激| 日韩精品综合免费视频| 国内真实露脸偷拍视频| 日韩欧美综合中文字幕| 日本高清不卡一二三区| 91人妻人澡人人爽人人精品| 国产综合欧美日韩在线精品| 国产亚洲欧美日韩精品一区| 日韩欧美一区二区不卡视频| 成年人免费看国产视频| 91精品国产综合久久福利| 国产一区二区精品丝袜| 好吊日在线观看免费视频| 久热这里只有精品九九| 91精品日本在线视频| 欧美日韩三区在线观看| 黄色美女日本的美女日人| 大香蕉大香蕉手机在线视频| 欧美av人人妻av人人爽蜜桃| 黄片美女在线免费观看| 一二区中文字幕在线观看| 成人免费高清在线一区二区| 日韩精品中文字幕亚洲| 久久偷拍视频免费观看| 99热九九在线中文字幕| 国产白丝粉嫩av在线免费观看| 不卡在线播放一区二区三区| 五月婷婷六月丁香亚洲| 国产毛片不卡视频在线| 丝袜美女诱惑在线观看| 老司机精品在线你懂的| 玩弄人妻少妇一区二区桃花| 六月丁香六月综合缴情| 人妻久久这里只有精品| 久久经典一区二区三区| 精品熟女少妇一区二区三区| av免费视屏在线观看| 久七久精品视频黄色的| 精品国产亚洲av久一区二区三区 |

    AI助手

    阅读时有疑惑?点击向AI助手提问吧

    联系客服

    微信扫码,添加客服企业微信

    客服QQ:

    1732698931

    联系电话:4000-999-276

    客服工作时间9:00-18:00,晚上非工作时间,请在微信或QQ留言,第二天客服上班后会立即联系您。