我愛學習網-上傳
當前位置: 主頁 > 文庫 > C++ >

C++/CLI中實現singleton模式

時間:2018-11-24 21:41來源:我愛學習網 作者:布丁點兒 點擊:

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

    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

    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

------分隔線----------------------------
    ?分享到??
看看啦
一级作爱免费视频在线观看-亚洲欧美日韩国产另类一区二区-亚洲国产一区二区三区网-国产午夜亚洲精品不卡