Boost中的單利模式
boost庫實現了一個單利模式,並區分返回的是const & 還是非const &。
如果返回的是const & ,則必然已經是執行緒安全的。
如果返回的是非 const &,則不是執行緒安全的,需要自己注意加鎖哦。
程式碼:
#include<iostream>
using namespace std;
#include "boost/serialization/singleton.hpp"
using namespace boost::serialization;
class A
{
public:
A(void){cout<<"A()"<<endl;}
~A(void){cout<<"~A()"<<endl;}
void print(void)const {cout<<"A::print()"<<endl;}
};
class B
{
public:
B(void){cout<<"B()"<<endl;}
~B(void){cout<<"~B()"<<endl;}
void print(void)const
{
singleton<A>::get_mutable_instance().print();//獲取非const例項,非執行緒安全的
}
};
void global_print(void)
{
singleton<A>::get_const_instance().print();//獲取const例項,執行緒安全的
}
int main(int,char**)
{
singleton<A>::get_const_instance().print();//獲取const例項,執行緒安全的
global_print();
B b;
b.print();
return 0;
};
輸出:
A()
A::print()
A::print()
B()
A::print()
~B()
~A()
請按任意鍵繼續. . .
相關文章
- 單利模式模式
- 單利模式的兩種最佳實現模式
- Kotlin & Java 之單利模式KotlinJava模式
- boost bind及function的簡單實現Function
- Flutter 中的單例模式Flutter單例模式
- 單利和複利
- Python 中的單例模式Python單例模式
- JS中的單例模式及單例模式原型類的實現JS單例模式原型
- DCL單例模式中的缺陷及單例模式的其他實現單例模式
- boost asio執行中報錯
- Swift 中單例模式的替換Swift單例模式
- Java中的單例模式最全解析Java單例模式
- Objective-C中的單例模式Object單例模式
- iOS中的單例設計模式iOS單例設計模式
- [Boost]一種簡單的批分字串的辦法 (轉)字串
- boost原始碼剖析----boost::any原始碼
- iOS單利的銷燬iOS
- 網頁設計中漢堡選單的利與弊網頁
- boost學習之Boost.Lambda
- C++ Boost 之Python(一個簡單的例子) (轉)C++Python
- 利克特的管理新模式(轉載)模式
- Java 中設計模式 (單例模式) 介紹Java設計模式單例
- c#單利C#
- 淺析Java併發中的單例模式Java單例模式
- Android中單例模式的幾個坑Android單例模式
- 【譯】簡單理解 JavaScript 中的設計模式JavaScript設計模式
- 設計模式(三)——JDK中的那些單例設計模式JDK單例
- Java中的簡單工廠設計模式Java設計模式
- java中的單例模式,舉例說明。Java單例模式
- boost and windowsWindows
- boost庫的介紹
- 單利複利_小知識彙集
- CRM主要贏利模式分析模式
- 單例模式中的DDCP可能出現的問題單例模式
- “單例”模式與它在原始碼中的運用單例模式原始碼
- python3中的單例模式SingletonPython單例模式
- c#中單例模式詳解C#單例模式
- JavaScript中單例模式這樣用JavaScript單例模式