정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

LockRecursionPolicy 열거형

2013-12-13

동일한 스레드에서 잠금을 여러 번 시작할 수 있는지 여부를 지정합니다.

Namespace:  System.Threading
어셈블리:  System.Core(System.Core.dll)

public enum LockRecursionPolicy

멤버 이름설명
NoRecursion스레드에서 잠금을 재귀적으로 시작하려고 하면 예외가 발생합니다. 이 설정을 적용하는 경우 일부 클래스에서 특정 재귀가 허용될 수도 있습니다.
SupportsRecursion스레드에서 잠금을 재귀적으로 시작할 수 있습니다. 일부 클래스에서는 이 기능이 제한될 수 있습니다.

기본 재귀 정책은 잠금 형식에 따라 다릅니다. 특정 잠금 형식의 기본 정책 및 잠금 재귀의 정확한 동작은 해당 형식에 대한 설명서를 참조하세요. 예를 들어 ReaderWriterLockSlim 클래스의 경우 이미 읽기 모드로 잠금을 시작한 스레드에서는 잠금 정책 설정과 관계없이 쓰기 모드로 잠금을 시작할 수 없습니다. 이는 교착 상태가 발생할 가능성을 줄이기 위한 것입니다.

현재 이 열거형이 사용되는 잠금 형식은 하나뿐입니다.

다음 예제에서는 예외가 발생하는 두 가지 시나리오를 보여 줍니다. 시나리오 중 하나는 LockRecursionPolicy 설정에 따라 다르지만 다른 하나는 그렇지 않습니다.

첫 번째 시나리오에서는 스레드에서 읽기 모드로 잠금을 시작한 다음 재귀적으로 읽기 모드를 시작하려고 합니다. 재귀 정책을 NoRecursion으로 설정하는 기본 생성자를 사용하여 ReaderWriterLockSlim을 만든 경우에는 예외가 발생합니다. SupportsRecursion을 사용하여 ReaderWriterLockSlim을 만든 경우에는 예외가 발생하지 않습니다.

두 번째 시나리오에서는 스레드에서 읽기 모드로 잠금을 시작한 다음 쓰기 모드로 잠금을 시작하려고 합니다. 이 경우에는 잠금 재귀 정책에 관계없이 LockRecursionException이 발생합니다.

Windows Phone OS

지원되는 버전: 8.0

표시: