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.