线程安全的singleton
来源:互联网 发布:windows系统架构图 编辑:程序博客网 时间:2024/03/29 20:01
#ifndef _SINGLETON_H_#define _SINGLETON_H_#include "MultiThread.h"class singleton{public: ~singleton() { } static singleton* getInstance() { MutexLockGuard lock(mutex_); if(NULL == instance_) { instance_ = new singleton(); } return instance_; }private: singleton() { } static singleton* instance_; Mutex mutex_;};singleton* singleton::instance_ = NULL;#endif //_SINGLETON_H_
上面解法不是很完美,每次getInstance都会加锁,二加锁是一个非常耗时的操作,在没有必要时应尽量避免。
我们只是在实例还没有创建之前需要加锁操作,以保证只有一个线程创建出实例。而当实例已经创建成功,我们已经
不需要再做加锁操作了,读是线程安全的。上述代码修改如下:
#ifndef _SINGLETON_H_#define _SINGLETON_H_#include "MultiThread.h"class singleton{public: ~singleton() { } static singleton* getInstance() { if(NULL == instance_) { MutexLockGuard lock(mutex_);//作用域为临界区 if(NULL == instance_) { instance_ = new singleton(); } } return instance_; }private: singleton() { } static singleton* instance_; Mutex mutex_;};singleton* singleton::instance_ = NULL;#endif //_SINGLETON_H_
- singleton 线程安全的singleton
- 线程安全的singleton
- 线程安全的singleton
- 线程安全的singleton
- 线程安全的singleton实例
- 线程安全的C++的Singleton实现
- Reproduced:线程安全的 Singleton - Visual Basic
- 编写线程安全的单件(Singleton)
- c# SingleTon的线程安全(存档)
- python 线程安全的单例 singleton
- ace allocator 和 singleton 的线程安全
- C++实现线程安全的Singleton
- Spring中Singleton模式的线程安全
- Spring中Singleton模式的线程安全
- Spring中Singleton模式的线程安全
- Spring中Singleton模式的线程安全
- Spring中Singleton模式的线程安全
- 线程安全的 C++ Singleton 实现
- [gkk]周六的chuan zhi答疑课-工厂模式
- json哪些事?
- opencv-shi-tomasi 角点检测
- IIS Rewrite 模块实现伪静态
- 从request获取各种路径总结
- 线程安全的singleton
- 杭电2052
- ubuntu系统中android开发环境的配置
- Erlang游戏开发-协议
- 如何输出dev_dbg log
- 快速排序和合并排序的比较(时间和比较步数)
- 网站建设
- JAVA 使用相对路径读取文件
- 更改J2E项目名称后运行报错问题修改?