Beispiel #1
0
        public async Task AcquireReaderAsync_UpgradeToWriterAsync_CancellationToken()
        {
            var readersWriterAsyncLock = new ReadersWriterAsyncLock();

            using (var upgradeableLock = await readersWriterAsyncLock.AcquireUpgradeableReaderAsync())
                using (var writerLock = await upgradeableLock.UpgradeToWriterAsync())
                {
                }
        }
Beispiel #2
0
        public void AcquireReader_UpgradeToWriter_CancellationToken()
        {
            var readersWriterAsyncLock = new ReadersWriterAsyncLock();

            using (var upgradeableLock = readersWriterAsyncLock.AcquireUpgradeableReader())
                using (var writerLock = upgradeableLock.UpgradeToWriter())
                {
                }
        }
Beispiel #3
0
        public void AcquireReadersAndWriter_CancellationToken()
        {
            var readersWriterAsyncLock = new ReadersWriterAsyncLock();

            using (readersWriterAsyncLock.AcquireReader())
                using (readersWriterAsyncLock.AcquireReader())
                    using (readersWriterAsyncLock.AcquireReader())
                    {
                        var start = Environment.TickCount;
                        using (var cancellationTokenSource = new CancellationTokenSource(100))
                        {
                            Assert.Throws <OperationCanceledException>(() =>
                                                                       readersWriterAsyncLock.AcquireWriter(cancellationTokenSource.Token));
                            Assert.True(Environment.TickCount - start >= 90);
                        }
                    }
        }