0

そのため、私のアプリの 1 つはインターネットから Web ページをダウンロードします。現在、Webページのダウンロードを高速化するために複数の(5)スレッドを使用しています

for (int i = 0; i < th; i++)
{
    Thread thread = new Thread(start);
    thread.Start()
}

start関数では、組み合わせによって Web ページをダウンロードしていHtttpWebRequestますWebResponse。プロセスを高速化する方法はありますか。

Tasks糸の代わりに使おうと思っています。PC の速度が大幅に向上したり、リソース使用量が減少したりすることはありますか?

ここでいくつかのガイダンスに本当に感謝します。

4

2 に答える 2

0

MSDNから:

バックグラウンドで、タスクは ThreadPool のキューに入れられます。ThreadPool は、スレッドの数を決定して調整し、負荷分散を提供してスループットを最大化するアルゴリズムで強化されています。これにより、タスクが比較的軽量になり、多くのタスクを作成して細粒度の並列処理を有効にすることができます。

言い換えれば、新しいスレッドを作成するのではなくプールされたスレッドを使用し、実行中のシステムに応じて作成するスレッドの数を自動的に決定できるため、Tasks を使用する方が効率的である可能性が高くなります。5 は最適ではない可能性があります。すべてのシステムのスレッド数。

デフォルトでは、2 つの同時 HTTP 要求のみが許可されることに注意してください。これを増やすには、リクエストを開始する前にServicePointManager.DefaultConnectionLimitの値を変更する必要があります。

于 2013-10-14T20:57:57.760 に答える