2012-03-16 32 views
0

スレッドプールがどのように実装されているかを調査するための優れたリソースを誰かが知っているのだろうかと思っていました。スレッドプールの最大サイズを動的に調整するアルゴリズムを定義するように求められました。ほとんどのリソースは、スレッドプールが必要な状況を定義します。つまり、タスクは短命ですが、この問題では状況がより多様です。長いタスクだけでなく、短い、いくつかのCPUの集中、いくつかのアイドリング頻繁。スレッドプールの実装

私の最初の答えは「おそらくスレッドプールを使用すべきではありませんでした」でしたが、本当の答えがあるはずです。

私が持っていた考えの1つは、システムリソース(CPU、メモリ)を見てそれに応じてサイズを調整するヒューリスティックを持つことでした。それとも私は、彼らが取って、どのようにint型

+1

codeprojectの[スマートスレッドプール](http://www.codeproject.com/Articles/7933/Smart-Thread-Pool)プロジェクトはかなり複雑ですが、(IIRC)それはあなたが話しているすべての機能を備えています。 –

+0

.NETタグを追加する必要があります。管理されていないスレッドは非常に安価であるため、このレイヤーは大部分が冗長です。管理されていない場合は、ワークキューに256個のスレッドをスローします。 –

答えて

0

あなたはライブラリtherore-concurrentのクラスSelfTuningExecutorsを使用することができますされている時間の長さを表示するにスレッドを監視することができます。私は同じ必要性を持っていたので、さまざまなタイプのタスクに適応できるJDK ThreadPoolExecutorの拡張を実装することにしました。このページをチェックすることができますlink

関連する問題