public void Test_Locking_MultiThread_GetInstance()
        {
            // given
            int sameHashCount  = 1000;
            int sameHashCount2 = 1000;
            var list           = new List <Singleton_Locking>();

            for (int i = 0; i < sameHashCount; i++)
            {
                var t = new Thread(() =>
                {
                    list.Add(Singleton_Locking.GetInstance());
                });
                t.Start();
            }

            // 等待所有实例都生成好
            Thread.Sleep(5000);

            // when
            foreach (var item1 in list)
            {
                foreach (var item2 in list)
                {
                    if (item1.GetHashCode() != item2.GetHashCode())
                    {
                        sameHashCount2 -= 1;
                        break;
                    }
                }
            }

            // then
            Assert.AreEqual(sameHashCount, sameHashCount2);
        }
        public void Test_Locking_GetInstance()
        {
            // given
            var instance0 = Singleton_Locking.GetInstance();

            // when
            var instance1 = Singleton_Locking.GetInstance();

            // then
            Assert.AreEqual(instance1.GetHashCode(), instance0.GetHashCode());
        }