Boost中的单利模式

boost库实现了一个单利模式,并区分返回的是const & 还是非const &。

如果返回的是const & ,则必然已经是线程安全的。

如果返回的是非 const &,则不是线程安全的,需要自己注意加锁哦。

代码:

#include
using namespace std;
#include "boost/serialization/singleton.hpp"
using namespace boost::serialization;

class A 
{
public:
	A(void){cout<<"A()"<::get_mutable_instance().print();//获取非const实例,非线程安全的
	}
};

void global_print(void)
{
	singleton::get_const_instance().print();//获取const实例,线程安全的
}

int main(int,char**)
{
	singleton::get_const_instance().print();//获取const实例,线程安全的
	global_print();
	B b;
	b.print();
	return 0;
};
输出:

A()
A::print()
A::print()
B()
A::print()
~B()
~A()
请按任意键继续. . .



你可能感兴趣的:(Boost,设计模式)