2017-04-16 2 views
-2

나는 내 Parallel.For 루프에서 다음을 복제하기 위해 노력하고있어 :Parallel.For

i <= totalPages 

I :

for (int i = 1; i <= totalPages; i++) { 
     // do something here...  
    } 

내가 i 카운터를 선언하는 방법을 발견하십시오 Parallel.For 루프 또는 PLINQ를 사용하여 복제하려면 ...

Parallel.For(1, totalPages, i => { 

}); 

그러나 병렬 for 루프에는 마지막 번호가 포함되도록 말할 수있는 방법이 없습니다.

말 totalPages가 = 15, 나뿐만 아니라 카운터에 포함 할 해당 번호를 싶습니다 ....

이이 Parallel.For 루프 또는 PLINQ 통해 할 수 있다면?

P. 얘들 아, totalPages은 컬렉션이 아닌 단순한 정수입니다.

+0

'totalPages' 컬렉션의 모든 항목을 반복해야합니다. 왜 그렇게 생각하지 않습니까? – Shyju

+0

@Shyju totalPages는 콜렉션이 아니라 일반 정수입니다 .. – perkes456

+0

누구? 그들은 이것을 생각하지 않았을 수는 없다 ...? – perkes456

답변

1

당신이 Parallel.For에 사용하는 과부하가에서 루프의 현재 번호를 포함한다, 아래의 매개 변수

  1. fromInclusive
  2. toExclusive

매개 변수 이름에서 알 수 있듯이을 사용하고 있습니다. 따라서 1을 값으로 전달하면 루프에는 1도 포함됩니다. 그러나 두 번째 매개 변수는 배타적입니다. "~"번호는 포함되지 않습니다. 따라서 5를 통과하면 루프의 반복에 5가 포함되지 않습니다.

사용자는 totalPages 변수 값 1를 추가 toExclusive PARAM 값

Parallel.For(1, totalPages+1, i => 
{ 
    Console.WriteLine(i); 
}); 
(totalPages 가정하면 산술 오버 플로우 예외)을 방지하기 위해 입력 Int32totalPages < Int32.MaxValue-1 ( 이다)로 그 연산 결과를 전달할 수

이것은 1, 2, 3, 4, 5에서 실행됩니다 (은 반드시 같은 순서가 아님)

0

다음과 같이 한계 변수에 하나를 추가 할 수 있습니다 w

Parallel.For(seed, limit+1,i=>{ //statements })