Exemplo n.º 1
0
        public static void Applay()
        {
            Singleton1 s;

            s = Singleton1.GetInstance();
            Console.WriteLine(s.ToString());
            Console.WriteLine(s.GetHashCode());
            var b = Singleton1.GetInstance();

            if (s == b) ///s.Equals(b))
            {
                Console.WriteLine("Objects are equals");
            }
            else
            {
                Console.WriteLine("Objects are not equals");
            }
            Console.WriteLine(b.GetHashCode());

            /*
             * Console.WriteLine("Multithreding problems:");
             *
             * (new Thread(() =>
             * {
             *  var d = Singleton1.GetInstance();
             *  Console.WriteLine($"d {d.GetHashCode()}");
             *  var e = Singleton1.GetInstance();
             *  Console.WriteLine($"e {d.GetHashCode()}");
             * })).Start();
             *
             * var c = Singleton1.GetInstance();
             * Console.WriteLine($"c {c.GetHashCode()}");
             *
             * var c1 = Singleton1.GetInstance();
             * Console.WriteLine($"c1 {c1.GetHashCode()}");
             */

            Console.WriteLine("Singleton 2");
            (new Thread(() =>
            {
                var d = Singleton2.GetInstance();
                Console.WriteLine($"d {d.GetHashCode()}");
                var e = Singleton1.GetInstance();
                Console.WriteLine($"e {d.GetHashCode()}");
            })).Start();
            {
                var c = Singleton2.GetInstance();
                Console.WriteLine($"c {c.GetHashCode()}");

                var c1 = Singleton1.GetInstance();
                Console.WriteLine($"c1 {c1.GetHashCode()}");
            }
        }
Exemplo n.º 2
0
 public static Singleton2 GetInstance()
 {
     if (_instance == null)
     {
         lock (syncRoot)
         {
             if (_instance == null)
             {
                 _instance = new Singleton2();
             }
         }
     }
     return(_instance);
 }