频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

C++/CLI中实现singleton模式

来源:博客网 作者:吴尔平 出处:巧巧读书 2006-02-20 进入讨论组
  • 关 键 词:
  • c++

  双重检测锁(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通告:http://www.qqread.com/cpp/p882359300.html 更多文章 更多内容请看C/C++技术专题专题,或进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章