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)); }
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)); }