BudgetAnalyser.Engine.UnitTest.Budget.InMemoryBudgetBucketRepositoryTest.ThreadSafetyCheckOnGetOrAdd C# (CSharp) Метод

ThreadSafetyCheckOnGetOrAdd() приватный Метод

private ThreadSafetyCheckOnGetOrAdd ( ) : void
Результат void
        public void ThreadSafetyCheckOnGetOrAdd()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            var threads = new List<Thread>();
            var concurrency = 50;
            var options = new ParallelOptions { MaxDegreeOfParallelism = 20 };
            ParallelLoopResult result = Parallel.For(
                1,
                concurrency,
                options,
                index =>
                {
                    var thread = new Thread(ThreadSafetyCheckOneThread);
                    threads.Add(thread);
                    Console.WriteLine("Starting thread " + index);
                    thread.Start(subject);
                });

            while (!result.IsCompleted)
            {
                Thread.Sleep(10);
            }

            foreach (Thread thread in threads)
            {
                thread.Join();
                Console.WriteLine("Thread finished ");
            }

            Assert.IsFalse(this.concurrencyFail);
        }