コード例 #1
0
        public void TestPool()
        {
            var locker = new ReadWriteLockAsync();

            Task.Run(async() =>
            {
                await locker.EnterReadLock();
                await Task.Delay(1000);
                locker.ExitReadLock();
            });

            Task.Run(async() =>
            {
                await locker.EnterReadLock();
                await Task.Delay(1000);
                locker.ExitReadLock();
            });

            Task.Run(async() =>
            {
                await locker.EnterReadLock();
                await Task.Delay(1000);
                locker.ExitReadLock();
            });

            Task.Run(async() =>
            {
                await locker.EnterWriteLock();
                await Task.Delay(1000);
                locker.ExitWriteLock();
            });

            Task.Run(async() =>
            {
                await locker.EnterReadLock();
                await Task.Delay(1000);
                locker.ExitReadLock();
            });
        }