이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 58026|회답: 2

[출처] ConcurrentDictionary는 새로운 업데이트 및 업데이트 기능을 지원합니다

[링크 복사]
게시됨 2016. 7. 13. 오전 11:12:05 | | |
개발 환경: .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가 사전에 수정/쓰기 기능을 제공하는 메서드로, 스레드 안전을 보장합니다(사전의 데이터를 읽는 잠금 없는 방식으로 수행됨).




이전의:조건이 구성된 LINQ 다조건부 쿼리
다음:Memcached 기본 작업 명령어 아래 윈도우
 집주인| 게시됨 2016. 9. 13. 오후 1:33:25 |
동시 사전 vs. 사전+잠금장치 - Dennis Gao
http://www.itsvse.com/thread-3106-1-1.html
(출처: 코드 농업 네트워크)
 집주인| 게시됨 2021. 3. 23. 오전 11:32:18 |
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com