示例#1
0
 public static async Task AsyncLock_AcquireAsync_Once()
 {
     using (var l = new AsyncLock())
         using (AsyncLockCookie t = await l.AcquireAsync())
         {
             Assert.True(t.IsAcquired);
             Assert.Equal(t.IsAcquired, t);
         }
 }
示例#2
0
 public static void AsyncLock_Acquire_Once()
 {
     using (var l = new AsyncLock())
         using (AsyncLockCookie t = l.Acquire())
         {
             Assert.True(t.IsAcquired);
             Assert.Equal(t.IsAcquired, t);
         }
 }
示例#3
0
 public static void AsyncLock_Acquire_Timeout()
 {
     using (var l = new AsyncLock())
     {
         var sw = Stopwatch.StartNew();
         using (AsyncLockCookie t1 = l.Acquire())
             using (AsyncLockCookie t2 = l.Acquire(100))
             {
                 Assert.True(t1.IsAcquired);
                 Assert.False(t2.IsAcquired);
                 Assert.True(sw.Elapsed.TotalMilliseconds >= 80);
             }
     }
 }
示例#4
0
 public static async Task AsyncLock_AcquireAsync_Timeout_Timespan()
 {
     using (var l = new AsyncLock())
     {
         var sw = Stopwatch.StartNew();
         using (AsyncLockCookie t1 = await l.AcquireAsync())
             using (AsyncLockCookie t2 = await l.AcquireAsync(TimeSpan.FromMilliseconds(100)))
             {
                 Assert.True(t1.IsAcquired);
                 Assert.False(t2.IsAcquired);
                 Assert.True(sw.Elapsed.TotalMilliseconds >= 80);
             }
     }
 }
示例#5
0
        public static void AsyncLock_Acquire_Wait()
        {
            using (var l = new AsyncLock())
            {
                AsyncLockCookie t1 = l.Acquire();
                Assert.True(t1.IsAcquired);

                var sw = Stopwatch.StartNew();
                ThreadPool.QueueUserWorkItem(_ =>
                {
                    Thread.Sleep(500);
                    t1.Dispose();
                });
                using (AsyncLockCookie t2 = l.Acquire())
                {
                    Assert.True(t2);
                }
                Assert.True(sw.Elapsed.TotalMilliseconds >= 400);
            }
        }
示例#6
0
        public static void AsyncLock_Acquire_Fail()
        {
            using (var l = new AsyncLock())
            {
                using (AsyncLockCookie t1 = l.Acquire())
                {
                    Assert.True(t1.IsAcquired);
                    using (AsyncLockCookie t2 = l.Acquire(0))
                    {
                        Assert.False(t2.IsAcquired);
                        Assert.Equal(t2.IsAcquired, t2);
                    }

                    using (AsyncLockCookie t2 = l.Acquire(TimeSpan.Zero))
                    {
                        Assert.False(t2.IsAcquired);
                        Assert.Equal(t2.IsAcquired, t2);
                    }
                }
            }
        }
示例#7
0
        public static async Task AsyncLock_AcquireAsync_Fail()
        {
            using (var l = new AsyncLock())
            {
                using (AsyncLockCookie t1 = await l.AcquireAsync())
                {
                    Assert.True(t1.IsAcquired);
                    using (AsyncLockCookie t2 = await l.AcquireAsync(0))
                    {
                        Assert.False(t2.IsAcquired);
                        Assert.Equal(t2.IsAcquired, t2);
                    }

                    using (AsyncLockCookie t2 = await l.AcquireAsync(TimeSpan.Zero))
                    {
                        Assert.False(t2.IsAcquired);
                        Assert.Equal(t2.IsAcquired, t2);
                    }
                }
            }
        }