当前位置: 移动技术网 > IT编程>开发语言>C/C++ > 单例模式(C++)

单例模式(C++)

2018年04月02日  | 移动技术网IT编程  | 我要评论

羟基脲,父亲的战争txt,番荔枝科

单例模式(C++):其他写法的单例模式就不多说了,主要说下多线程同时执行的情况下的单例模式。为了多线程执行时的安全性,该单例模式使用了锁的机制,防止数据一边在“读”,一边在“写”,导致数据不完整。

在本人做的一个海外的项目时就遇到了这个问题,当时查了很久,熬了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;
}

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网