2009-08-19 2 views
1

私は現在開発中のアプリケーションのコードを最適化しようとしています。現在の実装では、サーバーに新しいデータを継続的にポーリングするスレッドを作成します。 新しいデータが見つかった場合、スレッドはデータを取得するために(毎回作成される)複数のスレッドを生成します。C#スレッドプーリングの本当のメリット

私はthread poolingについて読んでいましたが、スレッドスプーリングを利用するコードを変更すると気になる点がありました。

+0

私の最初の投稿は混乱している可能性があります。 最初の長く続くスレッドは、サーバーをポーリングして新しいデータが利用可能になるたびに、複数のスレッドを継続的に生成します。 最適化に関する私の質問は、スレッドプールにそれらの継続的に複数の生まれつきのスレッドを回すことに何らかの利益があるかどうか、あるいはその利益は無視できるかどうかということです。 – Setheron

+0

なぜ、複数のスレッドをまったく産み出さないのですか?なぜ、長持ちするポーリングスレッドからやってみませんか? –

+0

これは、各スレッドの実行にかかる時間と、それらが生成される頻度によって異なります。 –

答えて

6

ポーリングを実行するために1つの長時間実行スレッドを作成した場合、大きな違いはありません。確かにあなたはおそらく今は眠っているでしょうから、(タイマーベースのソリューションと比べて)時間の長いものよりももう1つスレッドがありますが、基本的には問題ありません。

スレッドプールは、短命の操作が多い場合に特に適しています。スレッドの開始は無料ではありません。実際の作業が簡単であれば、オーバーヘッドはかなり大きくなります。スレッドプールは、実際のスレッドをぶら下げて、作業項目を待っています。その後、これらの作業項目を非常に少ないオーバーヘッドで実行することができます。

1つの長期実行タスクでは、オーバーヘッドはタスク自体に費やされた時間と比較して重要ではないため、何の違いも気づかないでしょう。

関連する問題