public void CouldNotIncrementWithoutLock() { var count = 10000000; var sw = new Stopwatch(); sw.Restart(); var lockTest = new LockTestSeries(); var t1 = Task.Run(() => { for (int i = 0; i < count; i++) { lockTest.IncrementNoLock(); } }); var t2 = Task.Run(() => { for (int i = 0; i < count; i++) { lockTest.IncrementNoLock(); } }); t2.Wait(); t1.Wait(); sw.Stop(); Console.WriteLine($"Elapsed {sw.ElapsedMilliseconds}"); Assert.True(2 * count > lockTest.Counter); }
public void CouldUseSimpleLock() { var count = 10000000; var sw = new Stopwatch(); sw.Restart(); var lockTest = new LockTestSeries(); var t1 = Task.Run(() => { for (int i = 0; i < count; i++) { lockTest.IncrementWithLock(); } }); //var t2 = Task.Run(() => //{ // for (int i = 0; i < count; i++) // { // lockTest.IncrementWithLock(); // } //}); //var t3 = Task.Run(() => //{ // for (int i = 0; i < count; i++) // { // lockTest.IncrementWithLock(); // } //}); //t3.Wait(); //t2.Wait(); t1.Wait(); sw.Stop(); Console.WriteLine($"Elapsed {sw.ElapsedMilliseconds}"); Assert.AreEqual(1 * count, lockTest.Counter); }