0

私はよく並列Web要求を実行していることに気付き、ネットワーク接続が処理できる並列要求の最大数があることに気付くので、MaxDegreeOfParallelismを設定し、parallel.forループを実行します。例:

Dim maxThreads As Integer = 20 'pre tested optimum amount that wont overload network
Parallel.For(0, items.Count, New ParallelOptions With {.MaxDegreeOfParallelism = maxThreads}, Sub(i)
    'network stuff
    'eg Dim source As String = New Net.WebClient.DownloadString(items(i)) etc
    End Sub

ネットワークタスクの完了には時間がかかるため、スレッド数は常に最大セットまで増加します。そのため、スレッドプールの最小スレッドを同じ量(maxThreads)に設定して、その時点から開始するのが理にかなっています。

これは問題なく動作し、見栄えがよく読みやすいですが、より良い実装がないのか、それともこのアプローチに固有の欠陥があるのだろうかと思います。

.Net 4.5はいくつかの優れた非同期サポートを導入していますが、残念ながら私は.net 4に制限されています。ポインタはありがたいです。はい、これはvb.netですが、c#の回答は問題ありません。

4

0 に答える 0