개발 환경: .NET 4.0 이상
참고: .NET Framework 4 내의 System.Collections.Concurrent 네임스페이스. MSDN 문서와 마찬가지로, ConcurrentDictionary는 여러 스레드가 동시에 접근할 수 있는 스레드 안전 컬렉션을 구현합니다. ConcurrentDictionary는 IDictionary<TKey, TValue>를 구현하며, 키/값을 추가하거나 업데이트하는 독특한 메커니즘을 가지고 있습니다. (아래는 언제 어떤 방법을 사용해야 하는지에 대한 설명입니다)
시나리오 1: 새로운 항목을 추가할 때, 키가 사전에 존재하지 않을 때만 가능합니다... TryAdd를 사용하세요. TryAdd는 키와 추가된 값을 사전에 받아들이며, 키가 사전에 존재하지 않으면 fasle을 반환합니다; 존재하면 true로 반환됩니다. public bool TryAdd(TKey key, TValue value)
상황 2: 사전 값의 기존 키를 업데이트하기... TryUpdate를 사용하세요. 사전에 이 키가 포함되어 있고 조건부 업데이트를 제공한다면, 현재 값이 비교 값과 동등할 때 업데이트할 수 있는 비교 값을 이 메서드에서 제공해야 합니다(TValue comparisonValue). public bool TryUpdate(TKey key, TValue newValue, TValue comparisonValue)
상황 3: 키/가치가 사전에 추가되어야 합니다; 키가 사전에 존재하는지 확실하지 않다면; 존재한다면 업데이트하세요. 없으면 추가하세요...
AddOrUpdate를 사용하세요. AddOrUpdate는 두 개의 오버로드를 가지며, 두 오버로드는 값의 값을 반환합니다: 첫 번째 오버로드된 매개변수는 AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>입니다). 매개변수는 키와 두 명의 대표자; 첫 번째 대리자의 목적은 키가 존재하지 않을 때 위임하여 값(초기 값)을 반환하는 것입니다. 이 위임 함수는 초기 값인 키> 반환<. 두 번째 대리자 Func <는 Value, key, oldValue>를 반환하며, 키가 사전에 존재하지 않을 경우 첫 번째 대리자를 실행합니다(존재한다면 실행되지 않습니다; 목적은 값에 초기 값을 부여하는 것이며, 그 후 값(값의 초기 값)을 반환합니다; 두 번째 위임은 값 값을 변경하는 방법으로, 이 역시 반환 값(초기 값을 최종 값으로 변경)을 필요로 합니다. Func < > 값, key, oldValue를 반환합니다. 공용 TValue AddOrUpdate(TKey, Func<TKey, TValue>, Func<TKey, TValue, TValue>)
2. 두 번째 오버로드의 매개변수는 AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)입니다. 첫 번째 매개변수는 key이고, 두 번째는 키가 존재하지 않을 때이며, 이 값은 값의 초기 값이며, 세 번째는 delegate is to change to execute(Func< 반환 Value, key, oldValue>입니다). public TValue AddOrUpdate(TKey, TValue, Func<TKey, TValue, TValue>)
상황 4: key의 값을 사전에 추가하되, 이미 key가 존재한다면 값을 빼는 것; 그렇지 않으면 추가됩니다 첫 번째 오버로드: GetOrAdd(TKEY, Func<TKey, TValue>valueFactory) 첫 번째 매개변수는 키이고, 두 번째 매개변수는 위임된 Func<value, key>입니다. 키가 존재하지 않을 때는 변수가 키로 전달되고 값이 변경됩니다. 그리고 키와 값을 생성하여 값 값을 반환합니다.
2. 두 번째 과부하: GetOrAdd (TKEY, TValue) 첫 번째 매개변수는 키이며, 두 번째 매개변수의 목적은 키가 존재하지 않을 때 키가 주어주는 새로운 값을 생성하는 것입니다. 수익 가치. public TValue GetOrAdd(TKEY,Func<TKey, TValue>valueFactory) public TValue GetOrAdd(TKEY,TValue)
AddOrUpdate와 GetOrAdd의 각 연산은 ConcurrentDictionary가 사전에 수정/쓰기 기능을 제공하는 메서드로, 스레드 안전을 보장합니다(사전의 데이터를 읽는 잠금 없는 방식으로 수행됨). |