LockCookie Structure
Defines the lock that implements single-writer/multiple-reader semantics. This is a value type.
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() | Equals(LockCookie) | Indicates whether the current instance is equal to the specified LockCookie. |
![]() | Equals(Object) | Indicates whether a specified object is a LockCookie and is equal to the current instance.(Overrides ValueType.Equals(Object).) |
![]() | GetHashCode() | Returns the hash code for this instance.(Overrides ValueType.GetHashCode().) |
![]() | GetType() | |
![]() | ToString() | Returns the fully qualified type name of this instance.(Inherited from ValueType.) |
| Name | Description | |
|---|---|---|
![]() ![]() | Equality(LockCookie, LockCookie) | Indicates whether two LockCookie structures are equal. |
![]() ![]() | Inequality(LockCookie, LockCookie) | Indicates whether two LockCookie structures are not equal. |
The following example shows how to request a reader lock, upgrade the reader lock to a writer lock, and save the LockCookie. It then uses the LockCookie to downgrade to a reader lock again.
This code is part of a larger example provided for the ReaderWriterLock class.
' The complete code is located in the ReaderWriterLock class topic. Imports System.Threading Public Module Example Private rwl As New ReaderWriterLock() ' Define the shared resource protected by the ReaderWriterLock. Private resource As Integer = 0
' Requests a reader lock, upgrades the reader lock to the writer ' lock, and downgrades it to a reader lock again. Sub UpgradeDowngrade(timeOut As Integer) Try rwl.AcquireReaderLock(timeOut) Try ' It's safe for this thread to read from the shared resource. Display("reads resource value " & resource) Interlocked.Increment(reads) ' To write to the resource, either release the reader lock and ' request the writer lock, or upgrade the reader lock. Upgrading ' the reader lock puts the thread in the write queue, behind any ' other threads that might be waiting for the writer lock. Try Dim lc As LockCookie = rwl.UpgradeToWriterLock(timeOut) Try ' It's safe for this thread to read or write from the shared resource. resource = rnd.Next(500) Display("writes resource value " & resource) Interlocked.Increment(writes) Finally ' Ensure that the lock is released. rwl.DowngradeFromWriterLock(lc) End Try Catch ex As ApplicationException ' The upgrade request timed out. Interlocked.Increment(writerTimeouts) End Try ' If the lock was downgraded, it's still safe to read from the resource. Display("reads resource value " & resource) Interlocked.Increment(reads) Finally ' Ensure that the lock is released. rwl.ReleaseReaderLock() End Try Catch ex As ApplicationException ' The reader lock request timed out. Interlocked.Increment(readerTimeouts) End Try End Sub
Available since 1.1
This type is thread safe.


