• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • C++/CLI中實現singleton模式

    發表于:2007-05-25來源:作者:點擊數: 標簽:雙重C++SingletonCLI實現
    雙重檢測鎖(Double-Checked Locking)實現的Singleton模式在多線程應用中有相當的價值。在ACE的實現中就大量使用ACE_Singleton模板類將普通類轉換成具有Singleton行為的類。這種方式很好地消除了一些重復代碼臭味,而且,優化后的 性能 較標準互斥版本提高1
      雙重檢測鎖(Double-Checked Locking)實現的Singleton模式在多線程應用中有相當的價值。在ACE的實現中就大量使用ACE_Singleton模板類將普通類轉換成具有Singleton行為的類。這種方式很好地消除了一些重復代碼臭味,而且,優化后的性能較標準互斥版本提高15倍。最近在用C++/CLI做一些工作,Singleton不可避免地需要用到,于是我又制造了一次車輪。

    clearcase/" target="_blank" >cccccc" width="90%" align="center" bgcolor="#e3e3e3" border="1">
    1 #pragma once
    2
    3 /** \class sidle::Singleton
    4 \brief Singleton (Double-Checked Locking)
    5 \author 吳爾平
    6 \version 1.0
    7 \date 2005.02.08 -
    8 \bug
    9 \warning
    10 */
    11
    12 namespace sidle
    13 {
    14  using namespace System;
    15  using namespace System::Threading;
    16
    17  template<typename _T>
    18  ref class Singleton
    19  {
    20   public:
    21    static _T^ Instance()
    22    {
    23     if (_instance == nullptr)
    24     {
    25      _mut->WaitOne();
    26      try
    27      {
    28       if (_instance == nullptr)
    29       {
    30        _instance = gcnew _T();
    31       }
    32      }
    33      finally
    34      {
    35       _mut->ReleaseMutex();
    36      }
    37     }
    38     return _instance;
    39    }
    40   protected:
    41    Singleton(){}
    42    static _T^ _instance;
    43    static Mutex^ _mut = gcnew Mutex();
    44  }; // ref class Singleton
    45
    46 }; // namespace sidle

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>