예제 #1
0
 public static async Task StrongLocks()
 {
     using var sharedLock = new AsyncSharedLock(3);
     True(await sharedLock.TryAcquireAsync(true, TimeSpan.Zero));
     False(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
     False(await sharedLock.TryAcquireAsync(true, TimeSpan.Zero));
 }
예제 #2
0
 public static async Task WeakLocks()
 {
     using var sharedLock = new AsyncSharedLock(3);
     Equal(3, sharedLock.ConcurrencyLevel);
     True(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
     True(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
     Equal(1, sharedLock.RemainingCount);
     True(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
     Equal(0, sharedLock.RemainingCount);
     False(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
     False(await sharedLock.TryAcquireAsync(true, TimeSpan.Zero));
     sharedLock.Release();
     Equal(1, sharedLock.RemainingCount);
     False(await sharedLock.TryAcquireAsync(true, TimeSpan.Zero));
     True(await sharedLock.TryAcquireAsync(false, TimeSpan.Zero));
 }