O'Reilly logo

C# in a Nutshell by Peter Drayton, Ted Neward, Ben Albahari

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

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

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required