AsyncReaderWriterLock クラス

定義

同時アクセス、排他アクセス、または排他アクセスへのアップグレード可能性を同時に許可する非ブロッキング ロック。

public ref class AsyncReaderWriterLock : IDisposable, Microsoft::VisualStudio::Threading::IHangReportContributor
public class AsyncReaderWriterLock : IDisposable, Microsoft.VisualStudio.Threading.IHangReportContributor
type AsyncReaderWriterLock = class
    interface IHangReportContributor
    interface IDisposable
Public Class AsyncReaderWriterLock
Implements IDisposable, IHangReportContributor
継承
AsyncReaderWriterLock
派生
実装

注釈

単に Task{LockReleaser} を返すのではなく、カスタム待機可能を使用する必要があります。これは、ロックを受け取るユーザーのコンテキストで CallContext データを設定する必要があるため、継続の開始時にコードを実行する必要があります (生成するかどうか)。

コンストラクター

AsyncReaderWriterLock()

AsyncReaderWriterLock クラスの新しいインスタンスを初期化します。

AsyncReaderWriterLock(Boolean)

AsyncReaderWriterLock クラスの新しいインスタンスを初期化します。

AsyncReaderWriterLock(JoinableTaskContext, Boolean)

AsyncReaderWriterLock クラスの新しいインスタンスを初期化します。

プロパティ

AmbientLock

呼び出し元の実行コンテキストによって保持されているロックを取得します。

CanCurrentThreadHoldActiveLock

現在のスレッドがアクティブ なロックを保持できるかどうかを示す値を取得します。

CaptureDiagnostics

デッドロックの診断などに役立つ情報を収集するために追加のリソースを費やす必要があるかどうかを示す値を取得または設定します。

Completion

タスクが完了した時点で、このロックがもう他のロックを発行しないことを通知するタスクを取得します。

DeadlockCheckTimeout

保留中のライター ロックとリーダー ロックがデッドロックを形成するかどうかをチェックする遅延時間を取得します。

IsAnyLockHeld

任意の種類のロックが呼び出し元によって保持され、呼び出し元のコンテキストを指定してすぐに使用できるかどうかを示す値を取得します。

IsAnyPassiveLockHeld

呼び出し元のコンテキストのロック互換性に関係なく、任意の種類のロックが呼び出し元によって保持されているかどうかを示す値を取得します。

IsPassiveReadLockHeld

呼び出し元のコンテキストのロック互換性に関係なく、読み取りロックが呼び出し元によって保持されているかどうかを示す値を取得します。

IsPassiveUpgradeableReadLockHeld

呼び出し元のコンテキストのロック互換性に関係なく、アップグレード可能な読み取りロックが呼び出し元によって保持されているかどうかを示す値を取得します。

IsPassiveWriteLockHeld

呼び出し元のコンテキストのロック互換性に関係なく、呼び出し元が書き込みロックを保持するかどうかを示す値を取得します。

IsReadLockHeld

呼び出し元が読み取りロックを保持するかどうかを示す値を取得します。

IsUnsupportedSynchronizationContext

現在の SynchronizationContext がこのロックでサポートされていないかどうかを示す値を取得します。

IsUpgradeableReadLockHeld

呼び出し元がアップグレード可能な読み取りロックを保持しているかどうかを示す値を取得します。

IsWriteLockHeld

呼び出し元が書き込みロックを保持するかどうかを示す値を取得します。

NoMessagePumpSynchronizationContext

SynchronizationContextを取得します。これを適用すると、呼び出し元スレッドの同期ブロック中に実行される可能性のあるメッセージ ポンプが抑制されます。

SyncObject

このインスタンスのフィールドへのアクセスを同期するために使用される オブジェクトを取得します。

メソッド

Complete()

発行されたすべてのロックが解放された後、新しい最上位のロック要求を拒否し、Completion タスクを完了状態に遷移させます。

Dispose()

同時アクセス、排他アクセス、または排他アクセスへのアップグレード可能性を同時に許可する非ブロッキング ロック。

Dispose(Boolean)

このインスタンスによって保持されているマネージド リソースとアンマネージド リソースを破棄します。

GetAggregateLockFlags()

入れ子になったすべてのロックのロック フラグの集計を返します。

GetHangReport()

ハング レポートに関するデータを投稿します。

GetTaskSchedulerForReadLockRequest()

ロックが取得されたときに継続を実行するタスク スケジューラを取得します。 AsyncReaderWriterLock は特別 SynchronizationContext な を使用して排他ロックを処理し、指定されたタスク スケジューラを無視するため、これは読み取りロックシナリオでのみ使用されます。 このメソッドは、現在の実行コンテキストに基づいて取得 TaskScheduler できるように、読み取りロックを待機するために実行コンテキスト内で呼び出されます。 注: タスク スケジューラは、ロックが後で発行された場合にのみ使用されます。 true を返したときに CanCurrentThreadHoldActiveLock ロックが直ちに発行された場合、ロックは無視されます。

HideLocks()

戻り値が破棄されるまで、呼び出し元のロックの使用を禁止したり、表示しないようにします。

LockStackContains(AsyncReaderWriterLock+LockFlags, AsyncReaderWriterLock+LockHandle)

ロック スタック内のすべてのロックから集計されたフラグが、指定したフラグを満たしているかどうかを確認します。

OnBeforeExclusiveLockReleasedAsync()

最後の書き込みロックが解放されるときに発生します。

OnBeforeLockReleasedAsync(Boolean, AsyncReaderWriterLock+LockHandle)

ロックが解放されるときに発生します。

OnBeforeWriteLockReleased(Func<Task>)

呼び出し元によって保持されている書き込みロックが最終的に解放されるときに呼び出されるコールバックを登録します (最も外側の書き込みロック)。

OnCriticalFailure(Exception)

ロックが、アプリケーションに直ちに報告する必要がある重大な欠陥を示す内部エラーまたは不正な使用パターンを検出し、ハングやデータの破損を回避するためにプロセスを停止したときに呼び出されます。

OnCriticalFailure(String)

ロックが、アプリケーションに直ちに報告する必要がある重大な欠陥を示す内部エラーまたは不正な使用パターンを検出し、ハングやデータの破損を回避するためにプロセスを停止したときに呼び出されます。

OnExclusiveLockReleasedAsync()

排他ロックが解放された後、誰かがロックに入る前に呼び出されます。

OnUpgradeableReadLockReleased()

最上位レベルのアップグレード可能な読み取りロックが解放されたときに呼び出され、残りの (書き込み) ロックは残っていません。

ReadLockAsync(CancellationToken)

読み取りロックを取得し、そのロックが直ちに取得できない場合は、非同期的にそのロックを待機します。

UpgradeableReadLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

読み取りロックを取得し、そのロックが直ちに取得できない場合は、非同期的にそのロックを待機します。

UpgradeableReadLockAsync(CancellationToken)

すぐに使用できない場合は、ロックを非同期的に待機して、アップグレード可能な読み取りロックを取得します。

WriteLockAsync(AsyncReaderWriterLock+LockFlags, CancellationToken)

書き込みロックを取得し、そのロックが直ちに取得できない場合は、非同期的にそのロックを待機します。

WriteLockAsync(CancellationToken)

書き込みロックを取得し、そのロックが直ちに取得できない場合は、非同期的にそのロックを待機します。

明示的なインターフェイスの実装

IHangReportContributor.GetHangReport()

ハング レポートに関するデータを投稿します。

適用対象

スレッド セーフ

この型は、すべてのメンバーに対してスレッド セーフです。