本文共 947 字,大约阅读时间需要 3 分钟。
特点:全局提供唯一一个类的实例,具有全局变量的特点
使用场景:内存池+数据池
基础的要点
具体的实现
饿汉模式——程序启动的时候进行初始化,资源在程序启动的时候就全部加载完毕了
优点:程序运行速度很快;缺点:程序初始化的时候就耗时比较长
实现
templateclass singlen{ public: //禁止构造,禁止拷贝构造,禁止拷贝 static T* GetInstance() { return &data_; }private: static T data;};
懒汉模式——资源在使用的时候才进行实例化,单例列的对象在使用的时候才进行实例化
优点:程序初始化的时候比较快;缺点:运行的时候没有饿汉模式流畅,可能存在线程安全的问题
实现
class singten{ public: static singten* GetInstance();private: signlen(); volatile static singten* p;};static singten* GetInstance(){ if(p==NULL) { pthread_mutex_lock(&locK_); if(p==NULL) { p=new singten(); } pthread_mutex_unlock(&lock_); } return p;}
互斥锁保证线程安全
双重if判断提高代码效率、
valatile关键字防止编译器过度优化
转载地址:http://hfowi.baihongyu.com/