本文共 545 字,大约阅读时间需要 1 分钟。
在c++实现单体模式和c#,java有些不同
.h
class Param{public: static Param& GetIntance() { return m_param; } static Param m_param;}.cpp
Param Param::m_param;
看起来比高级语言的单体模式还简单,不用考虑到多线程的问题
如果要求返回指针呢?
//头文件
class Singleton
{
private:
static Singleton *s_instance;
public:
static Singleton* instance();
}
Singleton* Singleton::instance() { if (!s_instance) { boost::mutex::unique_lock lock(your_mutex); //假设用boost的lock if(!s_instance) //双重检测 { s_instance = new Singleton; } } return s_instance; }
如此高效的避免了,在多线程模式下可能产生多个实例的现象
写得很不错
转载地址:http://tieti.baihongyu.com/