1. 经典的设计模式中的代码
public class Singleton { 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(); }
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; } }
4. 调用代码
ThreadCounter.Instance.Next