2009-06-23 5 views
11

별도의 인스턴스, 즉 응용 프로그램 당 하나 이상의 스레드 풀을 가질 수있는 가장 권장되는 .NET 사용자 정의 스레드 풀은 무엇입니까? 무제한 대기열 크기 (크롤러 제작)가 필요하며 크롤링 할 각 사이트에 대해 별도의 스레드 풀을 병렬로 실행해야합니다.별도의 인스턴스가있는 .NET 사용자 정의 스레드 풀

편집 : 각 사이트마다 별도의 스레드 풀을 사용하여 가능한 한 빨리 정보를 얻기 위해이 사이트를 채굴해야합니다. 주어진 시간에 각 사이트에서 작동하는 스레드 수를 제어 할 수 있습니다. (더 이상 2-3 이상) Roey

감사

+1

왜 각 사이트마다 별도의 스레드 풀을 실행해야합니까? – AnthonyWJones

+1

시간을내어 Daniel Moth의 비디오 : http://channel9.msdn.com/pdc2008/TL26/을 시청하십시오. 무제한 대기열은 무제한 성능의 길이 아니라는 것을 알 수 있습니다. – Groo

+0

나는 Anthony와 동의한다. 여러 스레드 풀이 필요하다고 생각하지 않습니다. 스레드 풀은 전체 시스템에서 작업을 관리하고 균형을 유지하기위한 것입니다. 수영장이 여러 개인 경우 컴퓨터가 과부하 상태가됩니다. 스레드 생성에 오버 헤드가 있다는 것을 잊지 마십시오. 이것이 스레드 풀이있는 것입니다. 최적의 양까지 스레드 수를 신중하게 관리하고 스레드간에 작업을 나눕니다. –

답변

1

는 존 소총을 요청하지 : 병렬 실행 작업의 큰 숫자를 원하는 경우 http://www.yoda.arachsys.com/csharp/miscutil/

Parallel extensions for .Net (TPL) 실제로 훨씬 더 작동합니다.

+1

이것은 하나 이상의 CPU 코어로 병렬 처리하는 데 사용되지만 개별 태스크 관리자가 모든 태스크 실행을 완료하면 알려주지 못하기 때문에 문제를 해결하지 못합니다. 중복 답변은 – Roey

7

나는 Smart Thread Pool이 이것을 할 수 있다고 믿습니다. ThreadPool 클래스가 인스턴스화되어 필요한대로 별도의 사이트 특정 인스턴스를 만들고 관리 할 수 ​​있어야합니다.

3

Ami bar는 인스턴스화 할 수있는 우수한 Smart 스레드 풀을 작성했습니다.

여기 좀 here

+0

-1입니다. AdamRalph는 이미 그것을 게시했습니다. –

+7

+1 그 대답은 2 분 후였다. AdamRalphs의 대답은 아직 문제가 아닙니다. – Simon

0

에게이 무료 nuget 라이브러리를 가지고 : CodeFluentRuntimeClient는 재사용 할 수있는 CustomThreadPool 클래스가 있습니다. 그것은 매우 구성 가능합니다. 풀 스레드 우선 순위, 번호, COM 아파트 상태, 심지어 이름 (디버깅 용) 및 문화권을 변경할 수 있습니다.