std::mutex g_lockMutex;
class A
{
public:
static A* GetInstance()
{
if (!m_instance) { // 未初始化时进行初始化
// 懒汉模式加锁保证线程安全
std::lock_guard<std::mutex> guard(g_lockMutex);
// 此处的判断时配合上一句的锁,为了避免调用GetInstance时频繁的
// 进入加锁,因此使用双重判断
if (!m_instance) {
m_instance = new A;
}
}
return m_instance;
}
private:
A(){}
~A(){}
};
一般情况下还是建议静态局部变量生成单例模式,详情参照: