public void TestReleaseRestoreWriterLock () { rwlock = new ReaderWriterLock (); rwlock.AcquireWriterLock (500); rwlock.AcquireWriterLock (500); Assert.IsTrue (rwlock.IsWriterLockHeld); LockCookie co = rwlock.ReleaseLock (); RunThread (new ThreadStart (AcquireLock_readerWorks)); rwlock.RestoreLock (ref co); RunThread (new ThreadStart (AcquireLock_readerFails)); rwlock.ReleaseWriterLock (); Assert.IsTrue (rwlock.IsWriterLockHeld); rwlock.ReleaseWriterLock (); Assert.IsTrue (!rwlock.IsWriterLockHeld); }
public void TestReleaseRestoreReaderLock () { rwlock = new ReaderWriterLock (); rwlock.AcquireReaderLock (500); rwlock.AcquireReaderLock (500); Assert ("r1", rwlock.IsReaderLockHeld); LockCookie co = rwlock.ReleaseLock (); RunThread (new ThreadStart (AcquireLock_writerWorks)); rwlock.RestoreLock (ref co); RunThread (new ThreadStart (AcquireLock_writerFails)); rwlock.ReleaseReaderLock (); Assert ("r2", rwlock.IsReaderLockHeld); rwlock.ReleaseReaderLock (); Assert ("r3", !rwlock.IsReaderLockHeld); }