AsyncReaderWriterLock 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
단독 액세스에 대한 업그레이드 가능성과 동시 액세스, 배타적 액세스 또는 동시 액세스를 허용하는 비 차단 잠금입니다.
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() |
중단 보고서에 대한 데이터를 적용합니다. |
적용 대상
스레드 보안
이 형식은 모든 멤버에 대해 스레드로부터 안전합니다.