728x90
ConcurrentDictionary<TKey, TValue>
- 여러 개의 스레드에서 동시에 액세스 할 수 있는 키/값 쌍의 스레드로부터 안전한 컬렉션이다.
- 모든 작업은 원자성이며 클래스의 다른 모든 작업과 관련하여 스레드로부터 안전하다.
- ConcurrentDictionary<TKey, TValue> 유일한 예외는 대리자, 및 GetOrAdd를 허용하는 메서드이다. AddOrUpdate 사전에 대한 수정 및 쓰기 작업의 경우는 ConcurrentDictionary<TKey, TValue> 세분화된 잠금을 사용하여 스레드 안전을 보장한다.(사전에 대한 읽기 작업은 잠금이 ㅇ벗는 방식으로 수행된다.) 그러나 이러한 메서드에 대한 대리자는 잠금에서 알 수 없는 코드를 실행하여 발생할 수 있는 문제를 방지하기 위해 잠금 외부에서 호출된다. 따라서 이러한 대리자가 실행하는 코드에는 작업의 원자성이 적용되지 않는다.
스레드 보안
- ConcurrentDictionary<TKey, TValue> 모든 공용 및 보호된 멤버는 스레드로부터 안전하며 여러 스레드에서 동시에 사용할 수 있다. 그러나 확정 메서드를 포함하여 구현하는 인터페이스 ConcurrentDictionary<TKey, TValue> 중 하나를 통해 액세스하는 멤버는 스레드로부터 안전하게 보호되지 않으며 호출자가 동기화해야 할 수도 있다.
728x90
'언어 > C#' 카테고리의 다른 글
GUID(Globally Unique Identifier) (0) | 2024.08.01 |
---|---|
DebuggerNonUserCodeAttribute, GerneratedCodeAttribute, RepeatedField (0) | 2024.08.01 |
Select, Where, OrderBy, List.Find(All) (0) | 2024.07.31 |
LINQ(Language Integrated Query), AsEnumerable Method (0) | 2024.07.31 |
ConstainsKey, AddOrUpdate 메서드, Stopwatch (0) | 2024.07.31 |