單例模式的多安全執行緒支援(C++)

來源:互聯網
上載者:User

單例模式的多線程支援,可以分兩種類型。


1、懶漢模式

C++11要求編譯器保證內部靜態變數的執行緒安全性,可以不加鎖。但C++11以前,仍需要加鎖。
Lock/UnLock可以採用boost中的技術技術。

class CSingleton{private:    CSingleton(){}public:    static CSingleton* getInstance()    {        Lock(); // not needed after C++11        static CSingleton instance;        UnLock(); // not needed after C++11        return &instance;     }};

2、餓漢模式

採用靜態初始化執行個體保證其執行緒安全性,這種方式可以避免鎖爭奪,但不好的地方在於即使用不到執行個體也會被建立出來。

class CSingleton{private:static CSingleton m_instance;CSingleton(){}public:static CSingleton* getInstance() {return &m_instance;}};//外部初始化CSingleton CSingleton::m_instance;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.