AsyncReaderWriterLock Class
Microsoft internal only. A non-blocking lock that allows concurrent access, exclusive access, or concurrent access that can be upgraded to exclusive access.
Inheritance Hierarchy
System.Object
Microsoft.VisualStudio.Threading.AsyncReaderWriterLock
Microsoft.VisualStudio.Threading.AsyncReaderWriterResourceLock<TMoniker, TResource>
Namespace: Microsoft.VisualStudio.Threading
Assembly: Microsoft.VisualStudio.Threading (in Microsoft.VisualStudio.Threading.dll)
Syntax
'Declaration
Public Class AsyncReaderWriterLock _
Implements IHangReportContributor
public class AsyncReaderWriterLock : IHangReportContributor
public ref class AsyncReaderWriterLock : IHangReportContributor
type AsyncReaderWriterLock =
class
interface IHangReportContributor
end
public class AsyncReaderWriterLock implements IHangReportContributor
The AsyncReaderWriterLock type exposes the following members.
Constructors
Name | Description | |
---|---|---|
AsyncReaderWriterLock() | Microsoft internal only. Initializes a new instance of AsyncReaderWriterLock. | |
AsyncReaderWriterLock(Boolean) | Microsoft internal only. Initializes a new instance of syncReaderWriterLock, specifying whether to spend additional resources on diagnostic details. |
Top
Properties
Name | Description | |
---|---|---|
AmbientLock | Microsoft internal only. Gets the lock held by the caller's execution context. | |
CaptureDiagnostics | Microsoft internal only. Determines whether additional resources should be spent to collect information that would be useful in diagnosing deadlocks. | |
Completion | Microsoft internal only. Gets a task whose completion signals that this lock will no longer issue locks. | |
IsAnyLockHeld | Microsoft internal only. Determines whether any kind of lock is held by the caller and can be immediately used given the caller's context. | |
IsAnyPassiveLockHeld | Microsoft internal only. Determines whether any kind of lock is held by the caller without regard to the lock compatibility of the caller's context. | |
IsPassiveReadLockHeld | Determines whether a read lock is held by the caller without regard to the lock compatibility of the caller's context. | |
IsPassiveUpgradeableReadLockHeld | Determines whether an upgradeable read lock is held by the caller without regard to the lock compatibility of the caller's context. | |
IsPassiveWriteLockHeld | Determines whether a write lock is held by the caller without regard to the lock compatibility of the caller's context. | |
IsReadLockHeld | Microsoft internal only. Determines whether the caller holds a read lock. | |
IsUpgradeableReadLockHeld | Microsoft internal only. Determines whether the caller holds an upgradeable read lock. | |
IsWriteLockHeld | Microsoft internal only. Determines whether the caller holds a write lock. | |
SyncObject | Microsoft internal only. Gets the object used to synchronize access to the fields of this instance. |
Top
Methods
Name | Description | |
---|---|---|
Complete | Microsoft internal only. Causes new top-level lock requests to be rejected and the Completion task to transition to a completed state after any issued locks have been released. | |
Equals | Determines whether the specified object is equal to the current object. (Inherited from Object.) | |
Finalize | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.) | |
GetAggregateLockFlags | Microsoft internal only. Gets the aggregate of the lock flags for all nested locks. | |
GetHashCode | Serves as the default hash function. (Inherited from Object.) | |
GetType | Gets the Type of the current instance. (Inherited from Object.) | |
HideLocks | Microsoft internal only. Prevents use or visibility of the caller's lock(s) until the returned value is disposed. | |
LockStackContains | Microsoft internal only. Checks whether the aggregated flags from all the locks in the lock stack satisfy the specified flag(s). | |
MemberwiseClone | Creates a shallow copy of the current Object. (Inherited from Object.) | |
OnBeforeExclusiveLockReleasedAsync | Microsoft internal only. Occurs when the last write lock is about to be released. | |
OnBeforeLockReleasedAsync | Microsoft internal only. Occurs when any lock is being released. | |
OnBeforeWriteLockReleased | Microsoft internal only. Registers a callback that is invoked when the outermost write lock held by the caller is about to be released. | |
OnCriticalFailure(Exception) | Occurs when the lock detects an internal error or illegal usage pattern that indicates a serious flaw that should be immediately reported to the application, while possibly also stopping the process to avoid hangs or data corruption. | |
OnCriticalFailure(String) | Occurs when the lock detects an internal error or illegal usage pattern that indicates a serious flaw that should be immediately reported to the application, while possibly also stopping the process to avoid hangs or data corruption. | |
OnExclusiveLockReleasedAsync | Microsoft internal only. Occurs after an exclusive lock is released but before any other lock consumer has a chance to enter the lock. | |
OnUpgradeableReadLockReleased | Microsoft internal only. Occurs when a top-level upgradeable read lock is released, leaving no remaining (write) lock. | |
ReadLockAsync | Microsoft internal only. Gets a read lock, asynchronously awaiting for the lock if it is not immediately available. | |
ToString | Returns a string that represents the current object. (Inherited from Object.) | |
UpgradeableReadLockAsync(CancellationToken) | Microsoft internal only. Gets a read lock, asynchronously awaiting for the lock if it is not immediately available. | |
UpgradeableReadLockAsync(AsyncReaderWriterLock.LockFlags, CancellationToken) | Microsoft internal only. Gets a read lock, asynchronously awaiting for the lock if it is not immediately available. | |
WriteLockAsync(CancellationToken) | Microsoft internal only. Gets a write lock, asynchronously awaiting for the lock if it is not immediately available. | |
WriteLockAsync(AsyncReaderWriterLock.LockFlags, CancellationToken) | Microsoft internal only. Gets a write lock, asynchronously awaiting for the lock if it is not immediately available. |
Top
Explicit Interface Implementations
Name | Description | |
---|---|---|
IHangReportContributor.GetHangReport | Microsoft internal only. data for a hang report. |
Top
Remarks
This class is a custom awaitable rather than a Task{LockReleaser}, because it is necessary to set CallContext data in the context of the entity receiving the lock. To do this the code must be executed at the start of the continuation (whether or not it yields).
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.