标签:str 带来 public return 访问 get static 机制 单例模式
1)单例模式就是一个类只能被实例化一次 ,更准确的说是只能有一个实例化对象的类
2)为什么要有单例模式:一则,解决多线程并发访问的问题;二则节约系统资源
3)
class CSingleton { //懒汉模式 private: CSingleton()//把构造函数设为private,不让外界直接生成实例 { pthread_mutex_init(&mtx, 0); } static CSingleton* p; public: static pthread_mutex_t mtx; static CSingleton* getInstance()//外界通过调用这个public函数去获得实例 { if (p == NULL)//只实例化一次 { pthread_mutex_lock(&mtx); //如果两个线程同时获取实例化对象,这样就会造出两个实例了,所以要加锁 p = new CSingleton(); pthread_mutex_unlock(&mtx); } else return p; } }; pthread_mutex_t CSingleton::mtx; CSingleton* CSingleton::p = NULL; class CSingleton { //饿汉模式,不用加锁 private: CSingleton(){} static CSingleton *p; public: static CSingleton* getInstance() { return p; } }; CSingleton* CSingleton::p = new CSingleton();//在外界会调用 CSingleton::getInstance()之前这个类就已经被实例化了,所以不会出现多线程的安全问题
标签:str 带来 public return 访问 get static 机制 单例模式
原文地址:https://www.cnblogs.com/Joezzz/p/10531912.html