C++线程安全的单例模式
作者:网络转载 发布时间:[ 2015/7/31 11:32:08 ] 推荐标签:编程语言 测试开发技术
废话不多说,常用的代码积淀下来。
一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。
需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread safety.
使用double-check来保证thread safety.但是如果处理大量数据时,该锁才成为严重的性能瓶颈。
1、静态成员实例的懒汉模式:
1 class Singleton
2 {
3 private:
4 static Singleton* m_instance;
5 Singleton(){}
6 public:
7 static Singleton* getInstance();
8 };
9
10 Singleton* Singleton::getInstance()
11 {
12 if(NULL == m_instance)
13 {
14 Lock();//借用其它类来实现,如boost
15 if(NULL == m_instance)
16 {
17 m_instance = new Singleton;
18 }
19 UnLock();
20 }
21 return m_instance;
22 }
2、内部静态实例的懒汉模式
这里需要注意的是,C++0X以后,要求编译器保证内部静态变量的线程安全性,可以不加锁。但C++ 0X以前,仍需要加锁。
1 class SingletonInside
2 {
3 private:
4 SingletonInside(){}
5 public:
6 static SingletonInside* getInstance()
7 {
8 Lock(); // not needed after C++0x
9 static SingletonInside instance;
10 UnLock(); // not needed after C++0x
11 return instance;
12 }
13 };
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11