单例模式的多线程安全支持(C++)

来源:互联网 发布:手机桌面天气预报软件 编辑:程序博客网 时间:2024/06/05 14:57

单例模式的多线程支持,可以分两种类型。


1、懒汉模式

C++11要求编译器保证内部静态变量的线程安全性,可以不加锁。但C++11以前,仍需要加锁。
Lock/UnLock可以采用boost中的技术技术。

class CSingleton{private:    CSingleton(){}public:    static CSingleton* getInstance()    {        Lock(); // not needed after C++11        static CSingleton instance;        UnLock(); // not needed after C++11        return &instance;     }};

2、饿汉模式

采用静态初始化实例保证其线程安全性,这种方式可以避免锁争夺,但不好的地方在于即使用不到实例也会被创建出来。

class CSingleton{private:static CSingleton m_instance;CSingleton(){}public:static CSingleton* getInstance() {return &m_instance;}};//外部初始化CSingleton CSingleton::m_instance;

0 1
原创粉丝点击