码迷,mamicode.com
首页 > 编程语言 > 详细

C++单例模式

时间:2015-07-07 19:07:17      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

 1 /*
 2 之所以在Instantialize函数里面对pInstance 是否为空做了两次判断,因为该方法调用一次就产生了对象,pInstance == NULL 大部分情况下都为false,如果按照原来的方法,每次获取实例都需要加锁,效率太低。
 3 而改进的方法只需要在第一次调用的时候加锁,可大大提高效率。
 4 
 5 第二重NULL == instance作用:
 6 如果同时又两个线程调用getInstance()时,都可以通过第一重NULL == instance,由于lock机制,
 7 只有一个线程进入,另一个在外等候,只有等第一个线程进入并出来后,第二个线程才能进入。如果
 8 没有第二重NULL == instance,第一个线程创建实例后第二个线程还是可以创建实例
 9  */
10 class Singleton
11 {
12 private:
13     static Singleton* instance;
14     Singleton(){}
15 public:
16     static Singleton* getInstance()
17     {
18         if(NULL == instance)
19         {
20             Lock();//借用其它类来实现,如boost
21             if(NULL == instance)
22             {
23                 instance = new Singleton();
24             }
25             UnLock();
26         }
27     return instance;
28     }
29 }

 

C++单例模式

标签:

原文地址:http://www.cnblogs.com/hujia7812556/p/4627273.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!