C++实现线程安全单例类

本文介绍了C++中的单例模式,包括其定义、如何构造线程安全的实例类,以及双检查机制和可能出现的隐患。通过使用C++11的mutex确保线程安全,同时讨论了懒汉模式和饿汉模式的区别,以及如何避免双检查机制中的潜在问题。
摘要由CSDN通过智能技术生成

1.什么是单例模式


单例模式是一种非常常用的设计模式,几乎在稍大的工程项目中都会用到。单例类保证在全局中只有唯一一个类的实例对象,并且在类的内部提供了获取这个唯一实例的接口。在类中,实例化出一个对象需要调用构造函数,为了防止在类的外部调用构造函数构造出实例,对类的构造函数就应有所限制,可以将构造函数的访问权限设置为private或protected。还要提供一个访问实例的接口,在类中定义一个static函数,返回类内部唯一的实例对象即可。

2.构造一个实例类


class Singleton
{
private:
    Singleton()   //构造函数声明为私有的
        :_a(0)
    {}

    //防拷贝
    Singleton(const Singleton&);
    Singleton& operator=(const Singleton&);

public:
    static Singleton* GetInstance()   //声明一个静态类型的接口来获取实例
    {
        if (_inst == NULL)
        {
            _inst =  new Singleton();
        }
        return _instance;
    }

private:
    int _a;
    //指向实例的指针定义为静态私有,这样定义静态成员函数获取对象实例
    static Singleton* _instance;
};

Singleton* Singl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值