System.Threading.Tests.ReaderWriterLockTests.WaitingReadersTest C# (CSharp) Метод

WaitingReadersTest() приватный Метод

private WaitingReadersTest ( ) : void
Результат void
        public static void WaitingReadersTest()
        {
            var trwl = new TestReaderWriterLock();
            trwl.AcquireWriterLock();

            Action acquireReleaseReaderLock =
                () =>
                {
                    trwl.AcquireReaderLock();
                    trwl.ReleaseReaderLock();
                };
            Action waitForWaitingReader1, waitForWaitingReader2;
            Thread waitingReader1 = ThreadTestHelpers.CreateGuardedThread(out waitForWaitingReader1, acquireReleaseReaderLock);
            Thread waitingReader2 = ThreadTestHelpers.CreateGuardedThread(out waitForWaitingReader2, acquireReleaseReaderLock);
            waitingReader1.IsBackground = true;
            waitingReader2.IsBackground = true;
            waitingReader1.Start();
            waitingReader2.Start();
            ThreadTestHelpers.WaitForCondition(() => (waitingReader1.ThreadState & ThreadState.WaitSleepJoin) != 0);
            ThreadTestHelpers.WaitForCondition(() => (waitingReader2.ThreadState & ThreadState.WaitSleepJoin) != 0);

            // Releasing the write lock releases all waiting readers
            trwl.ReleaseWriterLock();
            waitForWaitingReader1();
            waitForWaitingReader2();

            trwl.Dispose();
        }