言語

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
派生
実装

注釈

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

コンストラクター

名前 説明
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 を取得できるように、読み取りロックを待機するために実行コンテキスト内で呼び出されます。 注: タスク スケジューラは、ロックが後で発行されたときにのみ使用されます。 CanCurrentThreadHoldActiveLockが true を返したときにすぐにロックが発行された場合、ロックは無視されます。

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()

ハング レポートのデータを提供します。

適用対象

スレッド セーフ

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