LazyThreadSafetyMode 열거형
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
Lazy<T> 인스턴스가 여러 스레드 간 액세스를 동기화하는 방법을 지정합니다.
public enum class LazyThreadSafetyMode
public enum LazyThreadSafetyMode
type LazyThreadSafetyMode =
Public Enum LazyThreadSafetyMode
- 상속
필드
ExecutionAndPublication | 2 | 잠금을 사용하여 단일 스레드만 스레드로부터 안전한 방식으로 Lazy<T> 인스턴스를 초기화할 수 있도록 합니다. 실제로 초기화 메서드는 스레드로부터 안전한 방식으로 실행됩니다(필드 이름이라고 함 |
None | 0 | Lazy<T> 인스턴스는 스레드로부터 안전하지 않습니다. 여러 스레드에서 인스턴스에 액세스하는 경우 해당 동작이 정의되어 있지 않습니다. 고성능이 중요하며 Lazy<T> 인스턴스가 둘 이상의 스레드에서 초기화되지 않는 경우에만 이 모드를 사용합니다. 초기화 메서드( |
PublicationOnly | 1 | 여러 스레드에서 Lazy<T> 인스턴스를 동시에 초기화하려고 하면 모든 스레드에서 초기화 메서드(또는 초기화 메서드를 찾을 수 없습니다. 매개 변수가 없는 생성자)를 실행할 수 있습니다. 초기화를 완료하는 첫 번째 스레드에서 Lazy<T> 인스턴스의 값을 설정합니다. 이를 필드 이름에서라고 |
설명
이 열거형을 사용 하 여 지정 된 mode
의 매개 변수 Lazy<T> 생성자입니다. 가지고 여부 또는이 열거형 측면에서 스레드 동기화에 대 한 모든 생성자의 효과 설명할 수 있습니다 mode
매개 변수입니다.
Lazy<T> 인스턴스는 사용자 지정 초기화 메서드 또는 매개 변수가 없는 생성자에 T
의해 초기화됩니다. 지정 된 초기화 메서드가 합니다 valueFactory
의 매개 변수를 Lazy<T> 생성자입니다. 인스턴스를 반환 하는 메서드 T
, 인스턴스에서 지연 초기화 되는 형식인 Lazy<T>합니다. 생성자에 매개 변수가 valueFactory
없는 경우 매개 변수가 없는 생성자를 T
사용하여 인스턴스를 초기화합니다 Lazy<T> . 두 경우 모두 초기화가 처음 호출 하면 발생 합니다 Lazy<T>.Value 속성입니다.
스레드 보안을 지정 하는 것 외에도 Lazy<T> 예외 캐싱을 하는 경우가이 열거형에 영향을 줍니다. 에 대 한 예외가 캐시 되 면을 Lazy<T> 인스턴스를 표시 한 번만 인스턴스를 초기화 합니다. 처음으로 예외가 발생 하는 경우 호출 하는 Lazy<T>.Value 예외가 캐시 되 고 모든 후속 호출에서 다시 throw 속성인은 Lazy<T>.Value 속성입니다. 예외 캐싱을의 장점은 모든 두 스레드가 오류가 발생 하는 경우에 항상 동일한 결과 얻을 한다는 점입니다.
PublicationOnly 모드를 지정 하는 경우 예외가 캐시 되지 됩니다. None 또는 ExecutionAndPublication을 지정하는 경우 캐싱은 초기화 메서드를 지정할지 아니면 매개 변수가 없는 생성자를 T
사용할 수 있는지 여부에 따라 달라집니다. 초기화 메서드를 지정하면 이 두 모드에 대해 예외 캐싱을 사용합니다. 초기화 메서드는 매우 간단할 수 있습니다. 예를 들어 C#New Lazy(Of Contents)(Function() New Contents())
이나 Visual Basic 매개 변수가 없는 생성자를 T``new Lazy<Contents>(() => new Contents(), mode)
호출할 수 있습니다. 초기화 메서드를 지정하지 않는 생성자를 사용하는 경우 매개 변수가 없는 생성자에 T
의해 throw되는 예외는 캐시되지 않습니다. 다음 표에서 예외 캐싱 동작을 보여 줍니다.
모드 | 초기화 메서드를 사용 하 여 | 에 대한 매개 변수 없는 생성자 사용 T |
---|---|---|
None | 캐시됨 | 캐시되지 않음 |
PublicationOnly | 캐시되지 않음 | 캐시되지 않음 |
ExecutionAndPublication | 캐시됨 | 캐시되지 않음 |