单例模式(饿汉模式和懒汉模式)
2018-03-16 10:06
218 查看
//饿汉模式
//懒汉模式
#include <iostream> using namespace std; class singleton { private: singleton()//构造函数私有化 { } public : static singleton *GetInstance() { m_count++; return m_instance; } static void Release() { if (m_count >= 1) m_count--; if (m_instance != NULL && m_count == 0) { delete m_instance; m_instance = NULL; } } private: static int m_count;//引用计数 static singleton *m_instance; }; int singleton::m_count = 0; singleton *singleton::m_instance = new singleton; int main() { singleton *p1 = singleton::GetInstance(); singleton *p2 = singleton::GetInstance(); if (p1 == p2) cout << "同一个对象" << endl;//结果打印这句话 else cout << "不同对象" << endl; singleton::Release(); singleton::Release(); return 0; }
//懒汉模式
#include <iostream> #include <pthread.h> using namespace std; class singleton { private: singleton() { } public : static singleton *GetInstance() { if (m_instance == NULL) { pthread_mutex_lock(&m_mutex);//上锁 if (m_instance == NULL) m_isntance = new singleton; pthread_mutex_unlock(&m_mutex);//解锁 } m_count++; return m_instance; } static void Release() { if (m_count >= 1) m_count--; if (m_instance != NULL && m_count == 0) { delete m_instance; m_instance = NULL; } } private: static int m_count;//引用计数 static pthread_mutex_t m_mutex; static singleton *m_instance; }; int singleton::m_count = 0; pthread_mutex_t singleton::m_mutex = PTHREAD_MUTEX_INITIALIZER; singleton *singleton::m_instance = NULL; void *work(void*) { singleton *p = singleton::GetInstance(); } int main() { pthread_t id[10]; for (int i = 0; i < 10; i++) { pthread_create(&id[i], NULL, work, NULL); //线程分离 pthread_detach(id[i]); } pthread_exit(NULL); return 0; }
相关文章推荐
- Singleton 单例模式(懒汉方式和饿汉方式)
- C++的单例模式与线程安全单例模式(懒汉/饿汉)
- 从java.lang.Runtime看单例懒汉饿汉模式的选择
- 饿汉懒汉都是好汉——单例模式
- 单例模式中的懒汉模式和饿汉模式的最优写法
- 饿汉,懒汉,都是单身汉!---->简说单例模式里两个基友间的二三事
- java单例模式之饿汉模式与懒汉模式
- 单例模式的懒汉模式和饿汉模式
- 设计模式:单例模式-懒汉模型和饿汉模型
- 饿汉模式和懒汉模式的多线程访问问题
- 单例模式五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举。
- Java单例模式之懒汉模式及饿汉模式
- 单例模式之懒汉模式与饿汉模式的对比
- C++中的单例模式(懒汉、饿汉)
- 单例模式(饿汉模式和懒汉模式)
- 单例模式有五种写法:懒汉、饿汉、双重检验锁、静态内部类、枚举
- 单例模式中的懒汉模式和饿汉模式
- 单例模式之饿汉模式与懒汉模式
- 懒汉、饿汉单例模式具体代码
- 单例模式,懒汉模式,饿汉模式区别