2010-05-31 4 views
3

다음과 같은 문제를 해결하기 위해 .NET 4.0에서 새로운 동시 수집을 사용하고 싶습니다..net 4.0 동시 대기열 사전

원하는 기본 데이터 구조는 생산자 소비자 대기열입니다. 단일 소비자 및 여러 생산자가 있습니다.

이 대기열에 추가 할 A, B, C, D, E 유형의 항목이 있습니다. A, B, C 유형의 항목은 정상적인 방식으로 대기열에 추가되고 순서대로 처리됩니다.

그러나 D 또는 E 유형의 항목은 큐에 0 또는 한 번만 존재할 수 있습니다. 이들 중 하나가 추가되고 아직 처리되지 않은 동일한 유형의 다른 유형이 이미 존재하면 대기열의 다른 위치에서 해당 유형을 갱신해야합니다. 큐 위치는 업데이트 후에 변경되지 않습니다 (즉, 큐의 뒤쪽으로 이동하지 않음).

어떤 .NET 4.0 클래스가 가장 좋을까요?

답변

3

Atomic AddOrUpdate 작업을 지원하는 .net 4에는 그러한 (우선 순위) 큐가 없다고 생각합니다. 이것을 지원하는 ConcurrentDictionary 만 있지만 주문을 보존해야하는 경우에는 적합하지 않습니다.

그래서 두 가지 조합을 사용하는 것이 좋습니다.

그러나 병합 작업을 수행하는 즉시 병행 구조의 안전을 잃게됩니다. 당신은 스스로 잠금 메커니즘을 구현해야합니다 (여기에 그러한 상황의 예제를보십시오 : A .Net4 Gem: The ConcurrentDictionary - Tips & Tricks).

두 번째 옵션은 타사 구현을 위해 google이 될 것입니다.