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()
请按任意键继续. . .
如果返回的是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()
请按任意键继续. . .
相关文章推荐
- python基础练习(一)——自定义函数,数学运算,命令行输入
- JS中Date对象getYear()方法和getFullYear()方法区别
- 关于混淆矩阵的元素排序问题
- ListView和GridView实现单选效果
- Eclipse中SVN如何切换分支
- ORMLite的几个关键注解的使用说明
- Logstash分析MySQL慢查询日志
- java学习一:基本数据类型
- ubuntu开发环境部署流程
- IOS 获取当前版本信息
- DJango框架对Models操作
- 让任意线程执行一个匿名函数
- 修改ibdata1大小的验证以及如何使用mysqld_multi管理多实例
- 执行环境和作用域链
- 学习汤姆大叔的knockout教程笔记(一)
- #调整随机森林的参数(调整max_features,结果未见明显差异)
- 按照指定的宽高(或指定比例)来重新设置bitmap
- java程序猿应该了解的10个面向对象设计原则(每次看都很有感悟,特意拿来和大家共享)
- Zmq中pub和sub的用法
- 观察者模式(java)浅析