C++-饿汉式声明(单例声明)和懒汉式声明(单例声明 线程thread)
2021-01-24 10:14
阅读:595
标签:static thread stat initial class 开始 null std let
饿汉式声明, 一开始的时候对单例进行声明
#includeusing namespace std; class Singleton{ public: static Singleton& getInstance(void){ return s_instance; } void print(void) { coutendl; } private: Singleton(int data = 0):m_data(data){ cout "单例被创建" endl; }; Singleton(const Singleton&); int m_data; static Singleton s_instance; }; Singleton Singleton::s_instance = 123; int main(void){ Singleton& s1 = Singleton::getInstance(); Singleton& s2 = Singleton::getInstance(); Singleton& s3 = Singleton::getInstance(); cout endl; cout endl; cout endl; return 0; }
懒汉式声明, 在进行调用的时候进行声明,这里使用了线程里的互斥锁
#includeusing namespace std; class Singleton{ public: static Singleton& getInstance(void){ pthread_mutex_lock(&mutex); if(s_instance == NULL){ s_instance = new Singleton(123); } ++s_count; pthread_mutex_unlock(&mutex); return *s_instance; } //所有的使用者都不用再销毁 void release(void) { pthread_mutex_lock(&mutex); if (--s_count == 0){ delete s_instance; s_instance = NULL; } pthread_mutex_unlock(&mutex); } //单列对象不用销毁 void print(void) { cout endl; } private: Singleton(int data=0):m_data(data){ cout "创建单例" endl; } Singleton(const Singleton&); ~Singleton(void){ cout "单例被删除" endl; } int m_data; static Singleton* s_instance; static int s_count; static pthread_mutex_t mutex; }; Singleton* Singleton::s_instance = NULL;//进行私有化的生成操作 int Singleton::s_count = 0; //互斥锁定义和初始化 pthread_mutex_t Singleton::mutex = PTHREAD_MUTEX_INITIALIZER; int main() { Singleton& s1 = Singleton::getInstance(); Singleton& s2 = Singleton::getInstance(); Singleton& s3 = Singleton::getInstance(); cout "&s1" endl; cout "&s2" endl; cout "&s3" endl; s1.print(); s1.release(); s2.print(); s2.release(); s3.print(); s3.release(); }
C++-饿汉式声明(单例声明)和懒汉式声明(单例声明 线程thread)
标签:static thread stat initial class 开始 null std let
原文地址:https://www.cnblogs.com/hyq-lst/p/12866269.html
上一篇:7、js——数组
文章来自:搜素材网的编程语言模块,转载请注明文章出处。
文章标题:C++-饿汉式声明(单例声明)和懒汉式声明(单例声明 线程thread)
文章链接:http://soscw.com/index.php/essay/46270.html
文章标题:C++-饿汉式声明(单例声明)和懒汉式声明(单例声明 线程thread)
文章链接:http://soscw.com/index.php/essay/46270.html
评论
亲,登录后才可以留言!