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 데이터를 설정해야 하므로 작업{LockReleaser}을(를) 반환하는 대신 사용자 지정 awaitable을 사용해야 합니다. 이 경우 연속 작업을 시작할 때 코드를 실행해야 합니다(생성 여부에 관계없이).
생성자
| Name | Description |
|---|---|
| AsyncReaderWriterLock() |
AsyncReaderWriterLock 클래스의 새 인스턴스를 초기화합니다. |
| AsyncReaderWriterLock(Boolean) |
AsyncReaderWriterLock 클래스의 새 인스턴스를 초기화합니다. |
| AsyncReaderWriterLock(JoinableTaskContext, Boolean) |
AsyncReaderWriterLock 클래스의 새 인스턴스를 초기화합니다. |
속성
| Name | Description |
|---|---|
| AmbientLock |
호출자의 실행 컨텍스트에서 보유하는 잠금을 가져옵니다. |
| CanCurrentThreadHoldActiveLock |
현재 스레드가 활성 잠금을 유지할 수 있는지 여부를 나타내는 값을 가져옵니다. |
| CaptureDiagnostics |
교착 상태 진단 등에 유용한 정보를 수집하기 위해 추가 리소스를 사용해야 하는지 여부를 나타내는 값을 가져오거나 설정합니다. |
| Completion |
완료 시 이 잠금이 더 이상 잠금을 발급하지 않음을 알리는 작업을 가져옵니다. |
| DeadlockCheckTimeout |
보류 중인 기록기 잠금 및 판독기 잠금이 교착 상태를 형성하는지 확인하는 시간 지연을 가져옵니다. |
| IsAnyLockHeld |
호출자가 모든 종류의 잠금을 보유하고 호출자의 컨텍스트에 따라 즉시 사용할 수 있는지 여부를 나타내는 값을 가져옵니다. |
| IsAnyPassiveLockHeld |
호출자 컨텍스트의 잠금 호환성과 관계없이 호출자가 잠금을 보유하는지 여부를 나타내는 값을 가져옵니다. |
| IsPassiveReadLockHeld |
호출자 컨텍스트의 잠금 호환성과 관계없이 호출자가 읽기 잠금을 보유하는지 여부를 나타내는 값을 가져옵니다. |
| IsPassiveUpgradeableReadLockHeld |
호출자 컨텍스트의 잠금 호환성과 관계없이 호출자가 업그레이드 가능한 읽기 잠금을 보유하는지 여부를 나타내는 값을 가져옵니다. |
| IsPassiveWriteLockHeld |
호출자 컨텍스트의 잠금 호환성과 관계없이 호출자가 쓰기 잠금을 보유하는지 여부를 나타내는 값을 가져옵니다. |
| IsReadLockHeld |
호출자가 읽기 잠금을 보유하고 있는지 여부를 나타내는 값을 가져옵니다. |
| IsUnsupportedSynchronizationContext |
현재 SynchronizationContext가 이 잠금에서 지원되지 않는지 여부를 나타내는 값을 가져옵니다. |
| IsUpgradeableReadLockHeld |
호출자가 업그레이드 가능한 읽기 잠금을 보유하고 있는지 여부를 나타내는 값을 가져옵니다. |
| IsWriteLockHeld |
호출자가 쓰기 잠금을 보유하고 있는지 여부를 나타내는 값을 가져옵니다. |
| NoMessagePumpSynchronizationContext |
SynchronizationContext 적용할 때 호출 스레드의 동기 블록 중에 실행할 수 있는 메시지 펌프를 표시하지 않는 값을 가져옵니다. |
| SyncObject |
이 인스턴스의 필드에 대한 액세스를 동기화하는 데 사용되는 개체를 가져옵니다. |
메서드
| Name | Description |
|---|---|
| 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) |
즉시 사용할 수 없는 경우 잠금을 비동기적으로 기다리는 쓰기 잠금을 가져옵니다. |
명시적 인터페이스 구현
| Name | Description |
|---|---|
| IHangReportContributor.GetHangReport() |
중단 보고서에 대한 데이터를 제공합니다. |
적용 대상
스레드 보안
이 형식은 모든 멤버에 대해 스레드로부터 안전합니다.