设为首页 加入收藏

TOP

C++ 单例模式(懒汉、饿汉模式)(三)
2019-08-14 00:08:23 】 浏览:99
Tags:单例 模式 懒汉
] = ( HANDLE )_beginthread(threadFunc, 0,  nullptr );
     }
     
     // 让主进程等待所有的线程结束后再退出
     for ( int  i = 0; i<threadNum; i++){
         WaitForSingleObject(threadHdl[i], INFINITE);
     }
     cout<< "main" <<endl;                  // 验证主进程是否是最后退出
     return  0;
}

  运行结果:

4、线程安全的懒汉式单例的实现

饿汉式会提前浪费我们的内存空间以及资源,如果有项目中要求我们在使用到实例的时候再去实例化,则还是需要使用懒汉式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
class  singleton
{
protected :
     singleton()
     {
         // 初始化
         pthread_mutex_init(&mutex);
     }
private :
     static  singleton* p;
public :
     static  pthread_mutex_t mutex;
     static  singleton* initance();
};
 
pthread_mutex_t singleton::mutex;
singleton* singleton::p = NULL;
singleton* singleton::initance()
{
     if  (p == NULL)
     {
         // 加锁
         pthread_mutex_lock(&mutex);
         if  (p == NULL)
             p =  new  singleton();
         pthread_mutex_unlock(&mutex);
     }
     return  p;
}

  需要注意的是:上面进行的两次if(p == NULL)的检查,因为当获得了实例之后,有了外层的判断之后,就不会再进入到内层判断,即不会再进行lock以及unlock的操作。

首页 上一页 1 2 3 下一页 尾页 3/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Reliable Multicast Programming.. 下一篇选择排序的理解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目