线程安全的单例模式
来源:互联网 发布:淘宝不中红包 编辑:程序博客网 时间:2024/05/16 02:12
把构造函数私有化,对外提供一个静态的成员函数获取对象实例,这是我们对单例模式的最简单印象,但是如果多线程同时获取对象实例的时候,我们首先想到的是加锁
class Singleton { private: static Singleton* m_instance; Singleton(){} public: static Singleton* getInstance(); }; Singleton* Singleton::getInstance() { if(NULL == m_instance) { Lock(); if(NULL == m_instance) { m_instance = new Singleton; } UnLock(); } return m_instance; }
加锁其实很影响效率,可以换个方式实现
class SingletonStatic { private: static const SingletonStatic* m_instance; SingletonStatic(){} public: static SingletonStatic* getInstance() { return m_instance; } }; //外部初始化const SingletonStatic* SingletonStatic::m_instance = new SingletonStatic;利用全局变量在程序最开始就会被创建的原理,new SingletonStatic就会在多线程获取之前就被创建了。
0 0
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- Volatile 线程安全的单例模式
- 线程安全的单例模式
- 基于线程安全的单例模式
- 线程安全的单例模式
- 单例模式的线程安全
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式
- 线程安全的单例模式 [老生常谈]
- java线程安全的单例模式
- 线程安全的单例模式
- + 线程安全的单例模式
- queue,deque
- Eclipse插件卸载
- 从输入一个URL开始后台发生什么
- Android横竖屏切换总结
- JavaScript--事件模型
- 线程安全的单例模式
- 使用Hibernate生成数据库和连接数据库
- 解决Setting property 'source' to 'org.eclipse.jst.jee.server的问题
- Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
- Live555 实战之框架简介
- 更好的sql模式的10条规则
- Android中与js进行交互
- leetcode Range Addition
- canvas实现移动端和PC端刮刮卡效果