웹 페이지를 다운로드하는 Parallel.ForEach () 비동기 루프가 있습니다. 대역폭은 제한되어 있으므로 한 번에 x 페이지 만 다운로드 할 수 있지만 Parallel.ForEach는 원하는 웹 페이지의 전체 목록을 실행합니다.
Parallel.ForEach를 실행하는 동안 스레드 번호 또는 다른 제한기를 제한하는 방법이 있습니까?
데모 코드 :
Parallel.ForEach(listOfWebpages, webpage => {
Download(webpage);
});
실제 작업은 웹 페이지와 관련이 없으므로 창의적인 웹 크롤링 솔루션은 도움이되지 않습니다.
@ jKlaus 목록이 수정되지 않으면 예를 들어 URL 세트 일뿐이므로 실제로 문제를 볼 수 없습니까?
—
Shiv
@Shiv, 충분한 시간이 주어지면 ... 실행 횟수를 세고 목록의 개수와 비교하십시오.
—
jKlaus
@jKlaus 무슨 말이 잘못 될까요?
—
Shiv
@jKlaus는 스레드로부터 안전하지 않은 요소 (정수)를 수정하고 있습니다. 그 시나리오에서는 작동하지 않을 것으로 예상됩니다. 반면에 OP는 스레드 안전 해야하는 것을 수정하지 않습니다.
—
Shiv
@jKlaus 다음은 Count . > dotnetfiddle.net/moqP2C를 올바르게 설정하는 Parallel.ForEach의 예입니다 . MSDN 링크 : msdn.microsoft.com/en-us/library/dd997393(v=vs.110).aspx
—
jhamm