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 DowngradeFromWriterLock() to restore the original reader lock.

public sealed class ReaderWriterLock {
// Public Constructors
   public method ReaderWriterLock();  
// Public Instance Properties
   public field bool IsReaderLockHeld{get; } 
   public field bool IsWriterLockHeld{get; } 
   public field int WriterSeqNum{get; } 
// Public Instance Methods
   public method void AcquireReaderLock(
        int millisecondsTimeout);  
   public method void AcquireReaderLock(TimeSpan timeout);  
   public method void AcquireWriterLock(
        int millisecondsTimeout);  
   public method void AcquireWriterLock(TimeSpan timeout);  
   public method bool AnyWritersSince(int seqNum);  
   public method void DowngradeFromWriterLock(
        ref LockCookie lockCookie);  
   public method LockCookie ReleaseLock(); public ...

Get C# in a Nutshell 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.