单例模式的多线程安全支持(C++)
2016-01-14 18:03
423 查看
单例模式的多线程支持,可以分两种类型。
1、懒汉模式
C++11要求编译器保证内部静态变量的线程安全性,可以不加锁。但C++11以前,仍需要加锁。
Lock/UnLock可以采用boost中的技术技术。
2、饿汉模式
采用静态初始化实例保证其线程安全性,这种方式可以避免锁争夺,但不好的地方在于即使用不到实例也会被创建出来。
1、懒汉模式
C++11要求编译器保证内部静态变量的线程安全性,可以不加锁。但C++11以前,仍需要加锁。
Lock/UnLock可以采用boost中的技术技术。
class CSingleton { private: CSingleton(){} public: static CSingleton* getInstance() { Lock(); // not needed after C++11 static CSingleton instance; UnLock(); // not needed after C++11 return &instance; } };
2、饿汉模式
采用静态初始化实例保证其线程安全性,这种方式可以避免锁争夺,但不好的地方在于即使用不到实例也会被创建出来。
class CSingleton { private: static CSingleton m_instance; CSingleton(){} public: static CSingleton* getInstance() {return &m_instance;} }; //外部初始化 CSingleton CSingleton::m_instance;
相关文章推荐
- vs2013 C++ opencv配置
- C++ Map 嵌套
- C++中四种强制类型转换的区别
- 基于Libevent最小根堆定时器的C++定时器实现
- 欢迎使用CSDN-markdown编辑器
- C++ 学习
- 详解C++编程中的主表达式与后缀表达式编写基础
- setjmp和longjmp解析
- C++ socket传输结构体
- treap 1286郁闷的出纳员.cpp
- C++引用
- 关于C++中用两个迭代器方式初始化string的知识
- C++调用java的过程
- C/C++动态分配与释放内存的区别详细解析
- Google C++ 编程规范 笔记
- 【C语言】有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
- 并查集_POJ 1182_食物链
- c/c++宏定义的基本用法
- 讲解C++编程中Address-of运算符&的作用及用法
- c语言实现动态指针数组Dynamic arrays