The simplest Singleton
来源:互联网 发布:点卡在淘宝怎么使用 编辑:程序博客网 时间:2024/05/22 12:04
最简单的单根模式的实现:
//only suit for single-thread mode
class Singleton
{
public:
static Singleton& Instance()
{
static Singleton theSingleton;
return theSingleton;
}
/* more (non-static) functions here */
private:
Singleton();
Singleton(Singleton const&);
Singleton& operator=(Singleton const&);
~Singleton();
};
在Singleton & Instance()函数的实现中加入一个全局的静态locker可以实现线程安全的singleton.
class Singleton
{
public:
static Singleton& Instance()
{
//try to locker
//some_locker.lock();
static Singleton theSingleton;
return theSingleton;
}
/* more (non-static) functions here */
private:
Singleton();
Singleton(Singleton const&);
Singleton& operator=(Singleton const&);
~Singleton();
//static locker some_locker;
};
为了避免每次都调用locker,可以使用double checker的机制来改善。
关于double checker参见如下做法:
T* T::instance()
{ if (smInstance == NULL) { VMutexLocker lock(&smMutex); if (smInstance == NULL) // double-check smInstance = new T(); } return smInstance; }
注:为了避免内存泄漏,我们在实际中用了静态变量的引用的实现来实做singleton,而没有使用指针的实现。
- The simplest Singleton
- The Simplest View Controller
- The simplest Spring application to the beginner
- 【收藏】 The Simplest Anti-IF Code
- The Simplest App on MAC OSX
- [Apache --- Ant]DIY Ant Task I --- The Simplest one
- 2.1. Hello, World (part 1): The Simplest Module
- 给 C++ 类加上 property,the Simplest way
- Moq - The simplest mocking library for .NET and Silverlight
- the simplest sample of listener.ora and tnsnames.ora
- The Simplest COM Tutorial in Visual Studio 2008
- The Singleton pattern
- The fifth pattern------Singleton Pattern
- Implement the Singleton In AS3
- Using the Singleton design pattern
- Are the Singleton Really Bad
- Resist the Temptation of the Singleton Pattern
- Resist the Temptation of the Singleton Pattern
- 狮心王
- Misrosoft Enterprise Lib操作
- 一次DEBUG经历
- SQL SERVER 与ACCESS、EXCEL之间的数据转换
- 如何在asp.net中如何在线播放视频文件
- The simplest Singleton
- jquery取DropDownList下拉列表框选定项的值
- HTML字符实体(Character Entities),转义字符串(Escape Sequence)
- 谷歌vs百度,谁更黄
- J2ME环境配置笔记
- 说说:在ASP.NET应用程序中上传文件
- Eclipse 下 Applet 的路径问题
- 基于Spring.net、Nhibernate、Attribute的面向切面的权限管理实现
- 一个Java程序员应该掌握的10项技能