149  
查询码:00000211
线程安全的Singleton实现
作者: 董康康 于 2020年06月04日 发布在分类 / 物联网组 / 边缘接入网关 下,并于 2020年06月04日 编辑

#include <mutex>
#include <memory>


template<class T>
class KSingleton
{
public:
static std::shared_ptr<T> &Instance()
{
std::call_once(m_oc, Init);
return m_instance;
}

private:
KSingleton()=delete;
~KSingleton()=delete;

static void Init()
{
m_instance = std::shared_ptr<T>(new T());
}

private:
static std::once_flag m_oc;

static std::shared_ptr<T> m_instance;
};
template<class T>
std::once_flag KSingleton<T>::m_oc;

 template<class T>
 std::shared_ptr<T> KSingleton<T>::m_instance = nullptr;



 推荐知识

 历史版本

修改日期 修改人 备注
2020-06-04 15:58:14[当前版本] 董康康 创建版本

知识分享平台 -V 4.8.7 -wcp