您的位置:首页 > 编程语言 > C语言/C++

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

2016-01-14 18:03 423 查看
单例模式的多线程支持,可以分两种类型。

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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: