Exemple #1
0
        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);
        }
Exemple #2
0
        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");
        }