언어/C#

ConcurrentDictionary<TKey, TValue>

에린_1 2024. 8. 1. 09:51
728x90

ConcurrentDictionary<TKey, TValue>

  • 여러 개의 스레드에서 동시에 액세스 할 수 있는 키/값 쌍의 스레드로부터 안전한 컬렉션이다.
  • 모든 작업은 원자성이며 클래스의 다른 모든 작업과 관련하여 스레드로부터 안전하다.
  • ConcurrentDictionary<TKey, TValue> 유일한 예외는 대리자, 및 GetOrAdd를 허용하는 메서드이다. AddOrUpdate 사전에 대한 수정 및 쓰기 작업의 경우는 ConcurrentDictionary<TKey, TValue> 세분화된 잠금을 사용하여 스레드 안전을 보장한다.(사전에 대한 읽기 작업은 잠금이 ㅇ벗는 방식으로 수행된다.) 그러나 이러한 메서드에 대한 대리자는 잠금에서 알 수 없는 코드를 실행하여 발생할 수 있는 문제를 방지하기 위해 잠금 외부에서 호출된다. 따라서 이러한 대리자가 실행하는 코드에는 작업의 원자성이 적용되지 않는다.

스레드 보안

  • ConcurrentDictionary<TKey, TValue> 모든 공용 및 보호된 멤버는 스레드로부터 안전하며 여러 스레드에서 동시에 사용할 수 있다. 그러나 확정 메서드를 포함하여 구현하는 인터페이스 ConcurrentDictionary<TKey, TValue> 중 하나를 통해 액세스하는 멤버는 스레드로부터 안전하게 보호되지 않으며 호출자가 동기화해야 할 수도 있다.
728x90