1. 经典的设计模式中的代码
public
class Singleton
{
private static Singleton instance; // 唯一实例
protected Singleton() { } // 封闭客户程序的直接实例化
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
{
private static Singleton instance; // 唯一实例
protected Singleton() { } // 封闭客户程序的直接实例化
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
在多线程环境下存在缺陷, 最终将会保存最后创建的那个实例
2. 改进后的多线程Singleton
class Singleton
{
private Singleton() { }
[ThreadStatic]
public static readonly Singleton Instance = new Singleton();
}
{
private Singleton() { }
[ThreadStatic]
public static readonly Singleton Instance = new Singleton();
}
3. 线程计数器
public
class ThreadCounter
{
private ThreadCounter() { }
public static readonly ThreadCounter Instance = new ThreadCounter();
private int value;
public int Next { get { return ++value; } }
public void Reset() { value = 0; }
}
{
private ThreadCounter() { }
public static readonly ThreadCounter Instance = new ThreadCounter();
private int value;
public int Next { get { return ++value; } }
public void Reset() { value = 0; }
}
4. 调用代码
ThreadCounter.Instance.Next