std::mutex mtx;
class MySingle
{
private:
MySingle(){} //私有化构造函数
private:
static MySingle * m_single;
public:
static MySingle * GetInstance()
{
if (m_single == nullptr) { //双重检测,减少线程被锁的次数
std::lock_guard<std::mutex> my_lock(mtx);
if (m_single == nullptr) {
m_single = new MySingle();
static GC gc;
}
}
return m_single;
}
class GC //类中套类, 用来释放静态对象;
{
public:
~GC() {
if (MySingle::m_single) {
delete MySingle::m_single;
MySingle::m_single = NULL;
}
}
};
};
MySingle * MySingle::m_single = nullptr;
C++实现单例
最新推荐文章于 2023-02-13 12:59:28 发布
这篇博客详细介绍了C++中使用std::mutex和double-checked locking pattern实现线程安全的单例模式。通过类内静态对象GC确保了单例在程序结束时能够正确删除,避免内存泄漏。
摘要由CSDN通过智能技术生成