다음을 통해 공유


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}를 반환하는 대신 사용자 지정 awaitable을 사용해야 합니다. 이 경우 연속 작업을 시작할 때 코드를 실행해야 합니다(생성 여부에 관계없이).

생성자

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

이 instance 필드에 대한 액세스를 동기화하는 데 사용되는 개체를 가져옵니다.

메서드

Complete()

새로운 최상위 잠금 요청이 거부되고 발행된 잠금이 해제된 후 Completion 작업이 완료된 상태로 전환됩니다.

Dispose()

단독 액세스에 대한 업그레이드 가능성과 동시 액세스, 배타적 액세스 또는 동시 액세스를 허용하는 비 차단 잠금입니다.

Dispose(Boolean)

이 instance 보유한 관리되는 리소스와 관리되지 않는 리소스를 삭제합니다.

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

중단 보고서에 대한 데이터를 적용합니다.

적용 대상

스레드 보안

이 형식은 모든 멤버에 대해 스레드로부터 안전합니다.