Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }