2011-05-04 3 views
9

누군가 내게 한 가지를 설명 할 수 있습니까? AsParallel()이 자체 태스크에서 실행한다는 것을 이해합니다. 그래서 쿼리가 방대한 양의 데이터를 반환하면 'foreach'가 Console.WriteLine을 실행하기 시작했을 때 변수 'd'가 비어있을 수 있습니까?설명해주세요 AsParallel()

var integerList = Enumerable.Range(1, 100); 
var d = from x in integerList.AsParallel() 
where x <= 25 
select x; 
foreach (var v in d) 
{ 
Console.WriteLine(v); 
} 

답변

3

AsParallelPLINQ입니다. PLINQ은 자동으로 로컬 LINQ 개의 쿼리를 병렬 처리합니다. PLINQ은 작업 분할과 결과 정렬의 부담을 프레임 워크로 덜어 준다는 점에서 사용하기 쉽다는 장점이 있습니다.

PLINQ을 사용하려면 입력 순서에 AsParallel()을 호출 한 다음 평소와 같이 LINQ 쿼리를 계속하십시오.

변수 d이 아니며PLINQ이므로 비워 둘 수 있습니다. 비어있는 경우 컬렉션에 x <= 25 조건을 만족하는 요소가 없음을 의미합니다.

당신이 추가하면 더 here

1

번호를 .AsParallel() 읽을 수 PLINQ는 투명 경우,있는 OrderBy을 실행하고 고전적인 데이터를 병렬 평가 기법을 사용하여 사용 가능한 모든 프로세서를에 선택합니다. 실제로 쿼리는 foreach 루프에서 만지기 전까지는 전혀 실행되지 않습니다 (PLINQ는 LINQ와 마찬가지로 실행을 중단합니다). 주 스레드는 평소대로 쿼리 실행에서 돌아올 때까지 실행을 중단합니다.

Additional info here..

관련 문제