网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > C/C++ > 正文

C++/CLI中实现singleton模式

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 14/07/08

网学网为需要C/C++的朋友们搜集整理了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

  • 下一篇资讯: cpp关于const和函数
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号