程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C++/CLI中實現singleton模式

C++/CLI中實現singleton模式

編輯:更多關於編程

           雙重檢測鎖(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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved