static void Main2(string[] args) { Thread p1 = new Thread(() => SingletonUnsafe.GetInstance()); Thread p2 = new Thread(() => SingletonUnsafe.GetInstance()); Thread p3 = new Thread(() => SingletonUnsafe.GetInstance()); Thread p4 = new Thread(() => SingletonUnsafe.GetInstance()); Thread p5 = new Thread(() => SingletonUnsafe.GetInstance()); p1.Start(); p2.Start(); p3.Start(); p4.Start(); p5.Start(); p1.Join(); p2.Join(); p3.Join(); p4.Join(); p5.Join(); /* * SingletonSimple create x4 * SingletonSimple create x1 * Singleton is dummy created!!! * SingletonSimple create x3 * Singleton is dummy created!!! * Singleton is dummy created!!! * SingletonSimple create x2 * SingletonSimple create x5 * Singleton is dummy created!!! * Singleton is dummy created!!! */ }
public static SingletonUnsafe GetInstance() => _Instance ?? (_Instance = new SingletonUnsafe());