欢迎来到山村网

C++/CLI中实现singleton模式

2019-03-02 09:42:48浏览:742 来源:山村网   
核心摘要:双重检测锁(Double-Checked Locking)实现的Singleton模式在多线程应用中有相当的价值。在ACE的实现中就大量使用ACE_Singleton

双重检测锁(Double-Checked Locking)实现的Singleton模式在多线程应用中有相当的价值。在ACE的实现中就大量使用ACE_Singleton模板类将普通类转换成具有Singleton行为的类。这种方式很好地消除了一些重复代码臭味,而且,优化后的性能较标准互斥版本提高15倍。最近在用C++/CLI做一些工作,Singleton不可避免地需要用到,于是我又制造了一次车轮。

1 #pragma once

2

3

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

(责任编辑:豆豆)
下一篇:

java classpath 批量设置脚本

上一篇:

分析模块化的JavaScript开发的优势在哪里?

  • 信息二维码

    手机看新闻

  • 分享到
打赏
免责声明
• 
本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们 xfptx@outlook.com