public async Task PriorityLock_IsByPriority() { var mutex = new AsyncPriorityLock(); var key = await mutex.LockAsync(); var wait1 = mutex.LockAsync(1); var wait2 = mutex.LockAsync(2); key.Dispose(); var releasedWaiter = await Task.WhenAny(wait1.AsTask(), wait2.AsTask()); Assert.AreEqual(wait2.AsTask(), releasedWaiter); }
internal LockRequest(AsyncPriorityLock mutex, Task <IDisposable> key, int priority) { _mutex = mutex; _key = key; _priority = priority; }