单例模式(C++)

16 篇文章 0 订阅
13 篇文章 0 订阅

其他写法的单例模式就不多说了,主要说下多线程同时执行的情况下的单例模式。

为了多线程执行时的安全性,该单例模式使用了锁的机制,防止数据一边在“读”,一边在“写”,导致数据不完整。

在本人做的一个海外的项目时就遇到了这个问题,当时查了很久,熬了2个通宵,最后查到是多线程并发执行时对数据库中的数据没有加锁同步导致的。跑题了,接着下面讲述C++中的单例模式的使用。

单例模式只有一个实例,节省了资源,提高了效率,由于单例模式的实例是共享的,因此一定要做好保护,防止数据破坏,使用了double加锁对数据进行保护的机制,由于对公司的负责,只写出了关键部分的代码,如下:

class Singleton
{
private:
    Singleton() {}

    static Singleton *instance;

public:
    static Singleton *getInstance();
};

Singleton *Singleton::getInstance()
{
    if (NULL == instance)
    {
        lock();//加锁

        if (NULL == instance)
        {
            instance = new Singleton();            
        }

        unlock();//解锁
    }
    return instance;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值