Singleton模式Linux下的C++实现
2015-03-12 11:05
417 查看
Singleton模式是最常用的设计之一,最近结合自己的实际应用,把Singleton作为模板抽象出来(线程安全),权当抛砖引用,欢迎大家提出批评意见,互相交流。下面为源码,已经编译运行过。
#ifndef _Singleton_h_ #define _Singleton_h_ #include <pthread.h> //信号锁 保证线程安全 class Mutex { public: Mutex() { pthread_mutex_init(&m_lock,NULL); } ~Mutex() { pthread_mutex_destroy(&m_lock); } void Lock() { pthread_mutex_lock(&m_lock); } void UnLock() { pthread_mutex_unlock(&m_lock); } private: pthread_mutex_t m_lock; }; template<class T> class Singleton { public: static T* GetInstance(); static void Destroy(); private: static T* m_pInstance; static Mutex m_mutex; }; template<class T> T* Singleton<T>::m_pInstance = 0; template<class T> Mutex Singleton<T>::m_mutex; template<class T> T* Singleton<T>::GetInstance() { if (m_pInstance) { return m_pInstance; } m_mutex.Lock(); if (NULL == m_pInstance) { m_pInstance = new T; } m_mutex.UnLock(); return m_pInstance; } template<class T> void Singleton<T>::Destroy() { if (m_pInstance) { delete m_pInstance; m_pInstance= NULL; } } #endif
#include "Singleton.h" #include <iostream> using namespace std; class Testclass { public: void Run () { cout<<"Hi, Testclass run.\n"; } private: friend class Singleton<Testclass>; Testclass() {}; ~Testclass() {}; Testclass(const Testclass& ref); Testclass& operator=(const Testclass& ref); }; typedef Singleton<Testclass> SingleTestclass; int main(int argc,char* argv[]) { Testclass* pInstance = SingleTestclass::GetInstance(); pInstance->Run(); return 0; }/article/8729098.html
相关文章推荐
- Singleton模式Linux下的C++实现
- c++ 写的linux下简单的实现 get post 请求
- 常见设计模式的解析和实现(C++)之五-Singleton模式
- "c++实现的Mini Web Server,暂时当ftp使用" ---续 (Linux版)
- 常见设计模式的解析和实现(C++)之五-Singleton模式
- 实现linux的互斥量c++封装
- 【转贴】Singleton模式的C++实现研究
- linux C++ 实现ping类
- Linux下C++实现PHP扩展中级应用(一)
- 用c/c++实现linux下检测网络接口状态
- (转)如何在linux C/C++语言中调用 sqlite 的函数接口来实现对数据库的管理
- C++完美实现Singleton模式zz
- Head First设计模式C++实现-Singleton模式
- 用c/c++实现linux下检测网络接口状态
- C++实现Singleton模式
- linux下C++ 插件(plugin)实现技术
- 抱歉,没分了!!!请教linux下,用C/C++编程,如何知道我要实现某一功能需要用到什么函数
- CSDN技术中心 Singleton模式的C++实现研究(转载)
- 抱歉,没分了!!!请教linux下,用C/C++编程,如何知道我要实现某一功能需要用到什么函数
- C++实现Creational - Singleton模式