线程安全的单例模式

原创 2016年07月13日 15:03:32
把构造函数私有化,对外提供一个静态的成员函数获取对象实例,这是我们对单例模式的最简单印象,但是如果多线程同时获取对象实例的时候,我们首先想到的是加锁
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就会在多线程获取之前就被创建了。

版权声明:本文为博主原创文章,如需转载请标明出处链接!否则追究法律责任! https://blog.csdn.net/peng314899581/article/details/51898052

单例模式

-
  • 1970年01月01日 08:00

单例模式——C++实现线程安全的单例

一、懒汉模式:即第一次调用该类实例的时候才产生一个新的该类实例,并在以后仅返回此实例。 需要用锁,来保证其线程安全性:原因:多个线程可能进入判断是否已经存在实例的if语句,从而non thread ...
  • fu_zk
  • fu_zk
  • 2013-09-22 11:04:05
  • 21483

六种线程安全的单例模式

单例模式怕是很多程序员使用最多的设计模式了,面向对象的23种设计模式点这里。废话不多说,直接上代码: public class Singleton { //1.懒汉型 private ...
  • wanyouzhi
  • wanyouzhi
  • 2017-08-16 18:31:34
  • 1405

高并发下线程安全的单例模式(最全最经典)

在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单...
  • cselmu9
  • cselmu9
  • 2016-05-11 00:32:23
  • 77137

C++单例模式以及线程安全

写一个单例模式:class MySingleton { public: static MySingleton * GetInstance() //static method t...
  • wangshubo1989
  • wangshubo1989
  • 2016-09-18 13:31:32
  • 11567

简单java单例模式 懒汉式、饿汉式以及解决线程安全问题(synchronized)

单例模式(又称设计模式) 一个类只存一个对象(实例)。 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界...
  • qq_37768482
  • qq_37768482
  • 2017-08-24 19:07:28
  • 599

如何创建线程安全的单例模式?线程安全的Singleton!

单例模式的概念 单例模式就是确保只有一个实例,而且自行实例化并向整个系统传递这个实例,这个类就称作为单例类 单例模式最重要的一个特点就是构造方法私有化。创建单例模式分为懒汉式和饿汉式。 ...
  • a347911
  • a347911
  • 2016-11-24 16:59:35
  • 2011

设计模式 - 线程安全的单例模式(C#)

1、饿汉式单例模式 // 饿汉式单例模式 - by Chimomo namespace CSharpLearning { public sealed class Singleton ...
  • chimomo
  • chimomo
  • 2014-11-25 13:59:04
  • 2994

python 线程安全的单例 singleton

import threading class Singleton(object):     __instant = None;     __lock = threading.Lock();  ...
  • JianDan110
  • JianDan110
  • 2011-09-02 14:16:13
  • 1951

单例模式的七种写法, 面试题:线程安全的单例模式

http://cantellow.iteye.com/blog/838473 http://meizhi.iteye.com/blog/537563 转载请注明出处:h...
  • liangxw1
  • liangxw1
  • 2016-05-09 15:53:18
  • 11244
收藏助手
不良信息举报
您举报文章:线程安全的单例模式
举报原因:
原因补充:

(最多只允许输入30个字)