单例模式实现

实现线程安全的泛型单例模式 

#ifndef __SINGLETON_H__
#define __SINGLETON_H__

#include 
#include 

template 
class CSingleton
{
public: 
	static T& Instance();

private:
	CSingleton() {}

	static std::unique_ptr s_instace_;

	static std::mutex mutex_;
};

template
std::unique_ptr CSingleton::s_instace_;

template
std::mutex CSingleton::mutex_;

template
T& CSingleton::Instance()
{
	if (!s_instace_)
	{
		std::unique_lock lock(mutex_);
		if (!s_instace_)
		{
			s_instace_ = std::unique_ptr(new T);
		}
	}

	return *(s_instace_.get());
}

#endif // __SINGLETON_H__

 

你可能感兴趣的:(数据结构与算法,C++)