ReaderWriterLock

ReaderWriterLock

System.Threading (mscorlib.dll) sealed class

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   ); } 


C# in a Nutshell
C # in a Nutshell, Second Edition
ISBN: 0596005261
EAN: 2147483647
Year: 2005
Pages: 963

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net