2011-03-30 3 views
2

수십만 개의 요소가있는 사전이 있습니다. 사전에 각 쌍에 대해 긴 계산을 수행해야하므로,이 목적을 위해 몇 가지 작업자 스레드를 생성하고 사전에 작업 할 사전 범위의 각 스레드를 할당하고 싶습니다.사전에있는 KeyValuePair <> 요소의 반복 순서입니다 <int,T>

은 내가 해시 테이블은 "주문이 정의되어 있지 않습니다"하고 괜찮아요 이해 - 내가 신경 모두가 이것이다 :

나는 다른 스레드에서이 작업을 수행 할 경우 : pointDictionary에서

int count = 0; 
foreach (KeyValuePair<int, IDataPoint> pair in pointDictionary) 
{ 
    if (count >= min && count <= max) // min,max different for each thread 
    { 
     // do stuff 
    } 
    ++count; 
} 

것이다 요소 다른 스레드에서 같은 순서로 방문해야합니까?

그렇지 않으면 사전을 N 개의 사전으로 분리하고 각각의 미니 사전 중 하나를 N 개의 작업자 스레드에 전달해야합니다.

+0

그냥 궁금 : LINQ는 옵션 병렬하지 않을까요? '쌍에서 pointDictionary.AsParallel() select ...'? –

+0

@Michael - 예,이 코드는 .net 2.0을 타겟팅하고 있습니다. – Jesse

답변

관련 문제