2012-02-28 14 views
0

私のウェブサイトの保険料を払うために使用される最大10,000のURLのリストを読み込むソフトウェアがあります。複数のスレッドを管理する方法

リクエストごとに1つのスレッドが実行され、各URLがリストからロードされ、データがフェッチされます。私がしたいことは、1時間に20〜30件のリクエストを実行することです。テキストファイルの結果をループしながら、20-30スレッドを一度に起動するにはどうすればよいでしょうか?

+0

あなたが最大スレッド数(例えば20スレッド)に達するまで、あなたは、あなたが産卵それぞれの新しいスレッドに(50のURLを言う)一度にリスト全体をロードし、それからチャンクを引き渡すことができます。必要に応じて数字を微調整します。 –

+0

私は多分あなたの野望を縮小し、その数のアウトバウンドリクエストで、どのウェブサイトも天井速度で帯域幅料金を積み上げます。 – Lloyd

+0

興味があるかもしれません:http://stackoverflow.com/questions/8853907/limit-the-number-of-parallel-threads-in-c-sharp/8853978#8853978 – Jeb

答えて

1

.NET 4の場合は、TPLと次のようなものがあります。

const string path = @"c:\urls.txt"; 
string[] urls = File.ReadAllLines(path);    

var options = new ParallelOptions() 
       { MaxDegreeOfParallelism = 20}; 

Parallel.ForEach(urls, options, url => 
      { 
       // Call your scraper here 
       Debug.WriteLine(url); 
      }); 
関連する問題