public void TestWithoutParaller() { var a = LockSingleton.getInstance(); var b = LockSingleton.getInstance(); Assert.IsTrue(object.ReferenceEquals(a, b)); }
public void GetInstancesWithParaller() { Parallel.For(0, 100000, task => { LockSingleton.getInstance(); }); Assert.AreEqual(1, LockSingleton.counter); }
public void TestLockSingletonWithParaller() { LockSingleton a = null; LockSingleton b = null; LockSingleton c = null; Parallel.Invoke( () => { c = LockSingleton.getInstance(); }, () => { b = LockSingleton.getInstance(); }, () => { a = LockSingleton.getInstance(); }, () => { c = LockSingleton.getInstance(); }, () => { c = LockSingleton.getInstance(); } ); Assert.IsTrue(object.ReferenceEquals(a, b)); Assert.AreEqual(1, LockSingleton.counter); }