c++单态模式(不断完善中)

来源:互联网 发布:淘宝推广时间设置 编辑:程序博客网 时间:2024/05/18 05:32

考虑到:

1.析构、构造函数、拷贝构造函数、赋值操作的私有。

2.对象句柄的初始化和析构后的清0.

3.线程安全。

4.异常安全。

如果有网友发现还有改进的地方请指出。

#ifndef SINGLETON_H_#define SINGLETON_H_#include <pthread.h>class lock      //资源管理类。{private:pthread_mutex_t* p_mutex;lock(const lock& lk){}                    //资源不可以复制。lock& operator=(const lock& lk){}public :lock(pthread_mutex_t* mutex):p_mutex(mutex){pthread_mutex_lock(p_mutex);}~lock(){pthread_mutex_unlock(p_mutex);}};class singleton{private:static singleton* m_single;static pthread_mutext_t m_mutex;singleton(){}~singleton(){if(m_single){lock mutex(m_mutex);if(m_single){delete m_single;m_single=0;                  //注意清0.}}}singleton(const singleton& sin){}          //将拷贝构造和复制操作私有singleton& operator=(const singleton& sin){}public:static singleton* getSingleTon(){if(!m_single){lock mutex(m_mutex);           //线程安全。if(!m_single)m_single=new s ingleton;}return m_single;}static void destroySingleTon(){~singleton();}};pthread_mutext_t singleton::m_mutex=PTHREAD_MUTEX_INITIALIZER;singleton* singleton:: m_single=0;#endif


原创粉丝点击