青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Where there is a dream ,there is hope

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  64 Posts :: 0 Stories :: 8 Comments :: 0 Trackbacks

常用鏈接

留言簿(1)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

溫故而知新,總結了多種單例模式的寫法,考慮上多線程沒有非常完美的,各取所需吧

//1.
//Easy ,<<Pattern Design>>
//Q:
//When to free the m_singleton space?
//when to execute the destruct function?
//A:We can call getSingleton() at the end of the progress, 
//then delete the pointer and free the space, 
//but ,Here is a problem:Someone will call getSingleton() after 
//we delete it。How to avoid these?
class Singleton
{
    
public:
        
static Singleton* getSingleton()
        
{
            
if(NULL==m_singleton)
                
{
                    m_singleton
=new Singleton();
                }

                
return m_singleton;
        }

    
private:
        Singleton()
{}
        
~Singleton(){}
    
private:
        
static Singleton* m_singleton;        
}
;
//singleton.cpp
singleton* Singleton::m_singleton=NULL;
//Because ,at the end of the program, all globle vars will be destructed. ,
//and all the static vars .we can use this point, define a static var in
//the Singleton class ,it is used to delete the Singleton class .

//2.-----------
class Singleton
{
    
public:
        staitc Singleton
* getSingleton();
    
private:
        Singleton();
        
~Singleton();
        
static Singleton* m_singleton;
        
class Garbo//Just used for delete the static var
        {
            
public:
                Garbo();
                
~Garbo()
                
{
                    
if(Singleton::m_singleton!=NULL)
                        
{
                            delete Singleton::m_singleton;
                            Singleton::m_singleton
=NULL;
                      }

                }

        }

        staitc Garbo m_garbo;
//define a static var,
}

//singleton.cpp
Garbo Singleton::m_garbo;
//

//3.---------------
class Singleton
{
    
public:
    staitc Singleton
* getSingletonPtr()
    
{
        
if(NULL==m_singleton)
            
{
                m_singleton.reset(
new Singleton);
            }

            
return m_singleton.get();
    }

    
protected:
        Singleton()
{}
        
virtual ~Singleton(){}
        
        friend 
class auto_ptr<Singleton>;
        
static auto_ptr<Singleton> m_singleton;
}
;

//singleton.cpp
auto_ptr<Singleton> Singleton::m_singleton=NULL;
    


//4.
class Singleton
{
    
public:
        
static Singleton* getSingletonPtr()
        
{
            staitc Singleton singleton;
            
return &singleton;
        }

    
private:
        Singleton()
{}
        
~Singleton(){}
}


//5.
class Singleton
{
    
public:
        staitc Singleton
& getSingleton
        
{
            
return m_singleton;
        }

    
private:
        staitc Singleton m_singleton;
        Singleton()
{}
        
}



//6.---------thread safe

#pragma once
 
#include 
<memory>
using namespace std;
#include 
"Interlocked.h"
using namespace C2217::Win32;
 
namespace C2217
{
namespace Pattern
{
template 
<class T>
class Singleton
{
public:
       
static inline T* instance();
      
private:
       Singleton(
void){}
       
~Singleton(void){}
       Singleton(
const Singleton&){}
       Singleton 
& operator= (const Singleton &){}
 
       
static auto_ptr<T> _instance;
       
static CResGuard _rs;
}
;
 
template 
<class T>
auto_ptr
<T> Singleton<T>::_instance;
 
template 
<class T>
CResGuard Singleton
<T>::_rs;
 
template 
<class T>
 inline T
* Singleton<T>::instance()
{
       
if0 == _instance.get() )
       
{
              CResGuard::CGuard gd(_rs);
              
if0== _instance.get())
              
{
                     _instance.reset ( 
new T);
              }

       }

       
return _instance.get();
}

 
//Class that will implement the singleton mode,
//must use the macro in it's delare file
#define DECLARE_SINGLETON_CLASS( type ) \
       friend 
class auto_ptr< type >;\
       friend 
class Singleton< type >;
}

}

//       CresGuard 類主要的功能是線程訪問同步,代碼如下:
/******************************************************************************

*****************************************************************************
*/

 
 
#pragma once
///////////////////////////////////////////////////////////////////////////////
 
// Instances of this class will be accessed by multiple threads. So,
// all members of this class (except the constructor and destructor)
// must be thread-safe.
class CResGuard {
public:
   CResGuard()  
{ m_lGrdCnt = 0; InitializeCriticalSection(&m_cs); }
   
~CResGuard() { DeleteCriticalSection(&m_cs); }
 
   
// IsGuarded is used for debugging
   BOOL IsGuarded() const return(m_lGrdCnt > 0); }
 
public:
   
class CGuard {
   
public:
      CGuard(CResGuard
& rg) : m_rg(rg) { m_rg.Guard(); };
      
~CGuard() { m_rg.Unguard(); }
 
   
private:
      CResGuard
& m_rg;
   }
;
 
private:
   
void Guard()   { EnterCriticalSection(&m_cs); m_lGrdCnt++; }
   
void Unguard() { m_lGrdCnt--; LeaveCriticalSection(&m_cs); }
 
   
// Guard/Unguard can only be accessed by the nested CGuard class.
   friend class CResGuard::CGuard;
 
private:
   CRITICAL_SECTION m_cs;
   
long m_lGrdCnt;   // # of EnterCriticalSection calls
}
;

//7. most used
template <typename T>
class Singleton
{
public :
    
static T& getSingleton()
    
{
        
return *m_singlon;
    }


    
static T* getSingletonPtr()
    
{
        
return m_singlon;
    }

protected:

    Singleton()
    
{
        m_singlon
=static_cast<T*>(this);
    }


    
~Singleton()
    
{
        m_singlon
=NULL;
    }

private:
    Singleton(
const Singleton&){}

    Singleton
& operator=(const Singleton&){}

    
static T* m_singlon;
}
;

template
<typename T>
T
* Singleton<T>::m_singlon = NULL;
posted on 2011-03-09 16:18 IT菜鳥 閱讀(337) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲精品在线看| 亚洲第一免费播放区| 国产欧美va欧美不卡在线| 一区二区三区在线看| 夜夜夜久久久| 欧美xx视频| 午夜精品久久| 欧美视频手机在线| 亚洲国产精品成人| 欧美一区二区三区婷婷月色| 欧美激情1区2区| 午夜精品福利在线| 在线观看av不卡| 久久久久久网址| 亚洲一区久久| 欧美日韩国产美女| 在线播放日韩专区| 亚洲精品在线观看视频| 国产精品视频xxx| 亚洲一区免费看| 国产精品久久久久久久久果冻传媒| 亚洲精品中文字幕女同| 欧美视频在线观看| 老司机一区二区三区| 性做久久久久久免费观看欧美| 欧美三区视频| 久久综合伊人77777蜜臀| 麻豆freexxxx性91精品| 伊人久久成人| av不卡在线| 国产精品免费看| 欧美一区三区二区在线观看| 六月婷婷久久| 欧美在线视频免费观看| 欧美一级播放| 在线观看成人av| 亚洲欧美日韩在线综合| 亚洲另类视频| 亚洲欧洲精品一区二区| 亚洲高清免费在线| 欧美高清视频免费观看| 日韩午夜免费视频| 一本一本大道香蕉久在线精品| 国产精品成人一区二区艾草| 欧美成人国产一区二区| 国产欧美三级| 在线亚洲一区观看| 韩国成人理伦片免费播放| 欧美电影免费观看大全| 欧美精品成人在线| 篠田优中文在线播放第一区| 久久精品免费播放| 一本色道婷婷久久欧美| 可以看av的网站久久看| 一区二区三区高清在线| 欧美一区二区日韩一区二区| 亚洲欧美bt| 久久久www| 久久亚洲一区| 欧美四级在线| 亚洲视频精选| 性欧美办公室18xxxxhd| 国产精品麻豆欧美日韩ww| 亚洲少妇自拍| 欧美一区二区三区另类| 国产乱子伦一区二区三区国色天香| 久久久久国产一区二区三区| 欧美精品亚洲精品| 亚洲欧洲精品一区| 亚洲视频日本| 麻豆久久久9性大片| 免费成人在线观看视频| 国产精品久久久久久久午夜 | 国产精品久久久久久久app| 亚洲三级影院| 伊人久久综合97精品| 久久久久看片| 久久av一区二区三区漫画| 国产欧美日韩精品一区| 欧美在线视频一区二区| 亚洲视频图片小说| 国产毛片精品国产一区二区三区| 亚洲一区日本| 黑人操亚洲美女惩罚| 蜜桃视频一区| 中文精品视频| 久久久91精品国产| 亚洲成人在线| 欧美视频一二三区| 欧美一区高清| 亚洲国产日韩一级| 在线免费高清一区二区三区| 久久先锋影音av| 久久综合久久久久88| 亚洲精品字幕| 国产精品久久福利| 久久婷婷国产综合国色天香| 99v久久综合狠狠综合久久| 欧美伊人久久久久久久久影院| 狠狠色丁香婷婷综合| 欧美精品一区二区三区在线播放| 欧美成人亚洲成人日韩成人| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久精品99国产精品日本 | 久久激情婷婷| 久久精品免视看| 亚洲三级网站| 欧美精品成人| 久久精品国产成人| 亚洲午夜精品久久久久久app| 亚洲一区二区精品在线| 欧美日韩一区二区在线观看视频 | 久久综合狠狠| 亚洲一区二区成人在线观看| 加勒比av一区二区| 国产精品久久二区二区| 欧美成人在线免费观看| 亚洲国产成人tv| 久久久国产精品一区| 亚洲网站啪啪| 亚洲精品日韩综合观看成人91| 国产欧美在线观看| 欧美特黄一区| 欧美日本韩国一区二区三区| 久久亚洲私人国产精品va媚药| 亚洲午夜成aⅴ人片| 最近中文字幕mv在线一区二区三区四区 | 国产日产亚洲精品| 国产精品美女久久久久av超清 | 欧美精品一卡| 你懂的视频一区二区| 亚洲欧洲一区二区在线播放| 久热精品视频| 久久精品中文字幕一区二区三区| 亚洲男人天堂2024| 亚洲一区二区三区免费视频| 日韩视频在线播放| 日韩视频在线永久播放| 亚洲日本在线观看| 亚洲美女黄色| 日韩亚洲欧美成人| 一区二区三区久久久| 日韩午夜在线观看视频| 一本大道久久精品懂色aⅴ | 久久噜噜亚洲综合| 久久精品人人| 久久这里有精品15一区二区三区 | 亚洲影音一区| 性xx色xx综合久久久xx| 香蕉久久夜色精品国产| 午夜精品www| 久久gogo国模裸体人体| 久久久天天操| 欧美国产激情二区三区| 欧美理论电影在线播放| 欧美日韩a区| 国产精品啊啊啊| 蜜桃精品一区二区三区| 欧美肥婆在线| 国产精品成人va在线观看| 国产精品毛片a∨一区二区三区| 国产欧美一区视频| 亚洲高清av在线| 一区二区三区四区五区精品| 午夜日韩在线观看| 亚洲午夜国产成人av电影男同| 亚洲视频一起| 久久精品视频99| 欧美激情bt| 在线视频免费在线观看一区二区| 午夜伦理片一区| 另类亚洲自拍| 欧美午夜视频在线观看| 国内精品久久久久久| 国产精品丝袜白浆摸在线| 国产亚洲毛片在线| 国产三级欧美三级| 国产视频久久| 91久久精品一区| 亚洲精品日韩激情在线电影| 亚洲欧美在线一区二区| 美女黄网久久| 亚洲一区二区视频在线| 久热精品视频在线免费观看| 欧美日韩一区在线播放| 曰本成人黄色| 亚洲欧美在线x视频| 亚洲激情在线观看| 欧美资源在线观看| 国产精品久久久久久影视| 在线观看日韩av电影| 午夜精品视频一区| 日韩视频二区| 夜夜爽www精品| 裸体女人亚洲精品一区| 国产日韩精品久久久| 99精品免费网| 欧美激情久久久久久| 欧美在线视频一区| 国产伦精品一区二区三区高清版|