private static Stopwatch MeasureElapsedTimeOfGetInstanceInvocation(bool ifThreadSafe) { Stopwatch watch = new Stopwatch(); watch.Start(); for (int i = 0; i < 1000000; i++) { if (ifThreadSafe) { var testObject = SingletonThreadingSafe.GetInstance(); } else { var testObject = Singleton.GetInstance(); } } watch.Stop(); var time = watch.ElapsedMilliseconds; return(watch); }
private static void ThreadingTestSingletonThreadSafe() { var taskAccessingSingleton = Enumerable.Range(0, 10) .Select(t => Task <SingletonThreadingSafe> .Factory.StartNew(() => SingletonThreadingSafe.GetInstance())).ToArray <Task>(); Task.WaitAll(taskAccessingSingleton); Console.WriteLine($"Number of instances created by tasks = {SingletonThreadingSafe.InstanceCounter}\n\n\n"); }