您的位置:首页 > 其它

Boost中的单利模式

2016-03-31 18:11 225 查看
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()

请按任意键继续. . .
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: