Name

ReaderWriterLock

Synopsis

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 ...

Get C# in a Nutshell, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.