Exemple #1
0
            public async Task SameKeysWaitOnRelease()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key");

                Task awaiter = semaphore.Wait("key");

                Assert.False(awaiter.IsCompleted);

                semaphore.Release("key");

                Assert.True(awaiter.IsCompleted);
            }
            public async Task SameKeysWaitOnRelease()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key");

                Task awaiter = semaphore.Wait("key");

                Assert.False(awaiter.IsCompleted);

                semaphore.Release("key");

                Assert.True(awaiter.IsCompleted);
            }
            public async Task DifferentKeysIgnoreEachOther()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key1");
                await semaphore.Wait("key2");

                Task awaiter1 = semaphore.Wait("key1");
                Task awaiter2 = semaphore.Wait("key2");

                Assert.False(awaiter1.IsCompleted);
                Assert.False(awaiter2.IsCompleted);

                semaphore.Release("key1");

                Assert.True(awaiter1.IsCompleted);
                Assert.False(awaiter2.IsCompleted);

                semaphore.Release("key2");

                Assert.True(awaiter2.IsCompleted);
            }
Exemple #4
0
            public async Task DifferentKeysIgnoreEachOther()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key1");

                await semaphore.Wait("key2");

                Task awaiter1 = semaphore.Wait("key1");
                Task awaiter2 = semaphore.Wait("key2");

                Assert.False(awaiter1.IsCompleted);
                Assert.False(awaiter2.IsCompleted);

                semaphore.Release("key1");

                Assert.True(awaiter1.IsCompleted);
                Assert.False(awaiter2.IsCompleted);

                semaphore.Release("key2");

                Assert.True(awaiter2.IsCompleted);
            }
Exemple #5
0
            public async Task FirstWaitIsReleasedImmediately()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key");
            }
Exemple #6
0
            public void NotAwaitedKeyThrowsKeyNotFoundException()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                Assert.Throws <KeyNotFoundException>(() => semaphore.Release("wat"));
            }
            public async Task FirstWaitIsReleasedImmediately()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                await semaphore.Wait("key");
            }
            public void NotAwaitedKeyThrowsKeyNotFoundException()
            {
                var semaphore = new KeyedMemoizingSemaphore();

                Assert.Throws<KeyNotFoundException>(() => semaphore.Release("wat"));
            }