This class defines a lock that
allows multiple readers, but
only one writer. A thread can acquire a lock by calling
AcquireReaderLock( ) or
AcquireWriterLock( ). ReleaseReaderLock(
) and ReleaseWriterLock( ) release the
specific locks. Calling ReleaseReaderLock( ) on a
writer lock releases both the writer lock and the reader lock.
However, calling ReleaseWriterLock( ) on a reader
lock throws a System.ApplicationException.
ReleaseLock( ) causes any lock to be released, but
it returns a LockCookie, which represents the type
of lock that RestoreLock can use to obtain the
same lock. UpgradeToWriterLock( ) upgrades a reader
lock to a writer lock, and returns a LockCookie
representing the original reader lock. Pass that cookie to
DowngradeDromWriterLock( ) to restore the original
reader lock.
public sealed class ReaderWriterLock {
// Public Constructors
public ReaderWriterLock( );
// Public Instance Properties
public bool IsReaderLockHeld{get; }
public bool IsWriterLockHeld{get; }
public int WriterSeqNum{get; }
// Public Instance Methods
public void AcquireReaderLock(int millisecondsTimeout);
public void AcquireReaderLock(TimeSpan timeout);
public void AcquireWriterLock(int millisecondsTimeout);
public void AcquireWriterLock(TimeSpan timeout);
public bool AnyWritersSince(int seqNum);
public void DowngradeFromWriterLock(ref LockCookie lockCookie);
public LockCookie ReleaseLock( );
public void ReleaseReaderLock( );
public void ReleaseWriterLock( );
public void RestoreLock(ref LockCookie lockCookie);
public LockCookie UpgradeToWriterLock(int millisecondsTimeout);
public LockCookie UpgradeToWriterLock(TimeSpan timeout);
}