public void GetLock_With_Single_Thread_Test()
        {
            var rl = new RedisLock(rk, rs, defaultExpire); //test logic:expireDate is too small
            var r1 = rl.GetLock();
            var r2 = rl.GetLock();

            Assert.True(r1 && r2);
        }
        public void GetLock_With_Multi_Threads_Test()
        {
            int threadCount = 10;
            var rl          = new RedisLock(rk, rs, defaultExpire);
            var ls          = new List <string>();
            var count       = 0;

            rk.Del("lockObj");

            while (count <= 30)
            {
                ThreadPool.QueueUserWorkItem(s =>
                {
                    if (rl.GetLock())
                    {
                        ls.Add("got!");
                    }

                    count++;
                });
                //Task.Run(new Action(() =>
                //{
                //    if (rl.GetLock())
                //        ls.Add("got!");

                //    count++;
                //}));

                Thread.Sleep(10);
            }
            //for (int i = 0; i < threadCount; i++)
            //{
            //    new Thread(() =>
            //    {
            //        if (rl.GetLock())
            //            ls.Add("got!");
            //    }).Start();

            //    Thread.Sleep(5);
            //}

            Thread.Sleep(10000);

            Assert.True(ls.Count > 0);
        }