| 网站首页 | 新人学院 | 两性健康 | 创业学院 | 小游戏 | QQ 专区 | 性知识 | 图片 | 下载 | 推介 | 交友 | 健康无优 | 
□  您现在的位置: 新人无忧 >> 新人学院 >> 编程技巧 >> C、C# >> 正文
 
 

C++/CLI中实现singleton模式

来源:Internet 点击数: 更新时间:2006-7-1 1:44:33   
  双重检测锁(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   

相关文章: ASP + XML + javascript 实现动态无限级联动菜
VC++动态链接库编程之DLL木马
VS.NET 2005 Beta 2初体验(2)-用C++开发Native代码
ASP + XML + javascript 实现动态无限级联动菜
C++/CLI中实现singleton模式
C++程序员必需的修养
 □ 学院热点更新 
·让我们远离病毒八项基本原则
·教你彻底防杀木马病毒(强列
·十大流氓软件完全卸载全攻略
·让ADSL永不断线--操作实战演
·有关网络的基础知识(入门手
·上网一千问(新人上网必看)
·[注意]电脑故障的排除原则、
·电脑故障排除的一般分析方法

Windows 2003服务器安

QQ图标全攻略(图)

【新手上网必看】什么

实用技巧 彻底而又简单
设为首页 - 友情连接 - 问题反馈 - 免责声明 - 广告服务 - 收藏本站 - 网站地图
www.jy361.com[新人无忧] 版权所有 Copyright©2004-2007
资源来源网络,版权规作者所有。新人学院为您提供学习的平台,谢谢对我们的支持。