はるかに合理的な作成するために、スレッドプールのスレッド

 

スレッドプール内のスレッド数を設定し、私たちはしばしば、より良い、スレッド数が設定されていません。この問題を考えますか?我々は問題を理解する前に、複数のスレッドを使用する理由当社は、最初正確に知る必要があります。

なぜ使用のマルチスレッド

我々はそれがプログラムのパフォーマンスを向上させることにある答えることができる必要があり、複数のスレッドを使用しての主な目的は、この事実は、パフォーマンスを改善し、待ち時間を短縮することを意味し、受信したデータの時間を指す要求に送信され、スループットを出す:単位時間当たりのより多くのエネルギーを処理することができます多くのリクエスト。

機械の性能を最大化するために最適化アルゴリズムとハードウェアの2つの方法で、スループットを向上させるためのほぼ遅延及び対応する方法。実行時間が短くなるように最適化アルゴリズムは、時間と空間の複雑さを軽減します。ハードウェアのパフォーマンスを最大化するために、コンクリートはI / OとCPU使用率の例を改善する方法を、I / OとCPUの使用率を改善することを意味する:唯一のシングルコアシステムIO操作の実行場合やCPUを計算していますコードプログラムはIOオペレーションを実行した場合、CPUの事実は逆IOに、アイドル状態の二つのスレッドを使用してこの時間は、このコードを実行する場合、アイドル状態のスレッドは、次にIO操作、実行CPU計算のスレッド、IOを実行しますそして、CPU使用率が極端に再生されませんか?

より適切な方法は、多くのスレッドを作成するには

上記の分析の後、我々は最高の利用率のハードウェアスレッドの最高数で作成する方法を多くのスレッドを知っています。

我々はプログラムのCPU IOの操作や計算を持っている場合、我々はIO集約型コンピューティングを呼び出すことができ、原因長い時間がかかり、CPUの計算よりにシナリオスレッド、IO操作を分析します。CPUはCPU集中的に使用するプログラムと呼ばれる場合はIOプログラムは動作しません。

  • IO集約型コンピューティング、我々は究極のハードウェアの使用率を達成しない方法CPUは、上記の例から見に連れて行ってくれました/ R = IOがかかることになる場合、時間がかかるIO / CPU時間がかかる= 10(私たちは通常、APMに統計ツールを使用することができますあなたは計算を実行するために10スレッドのCPUを作成する必要がありますので、スレッド実行IOオペレーションを作成するには、この比率が)、私たちは、操作が完了イオCPUはまた、ちょうどその利用が終了したときに、IO動作CPUがアイドル状態にすることができないときことを願っていますこのコードの実装では、時間の100%。それは*マルチコアCPU = CPUコア数、スレッドの最適な数であれば、1 + I / O時間のかかる/ CPU時間のかかる:この例で我々はより効率的に実装するには、1 + 10 = 11スレッドを作成したいので、式を取得します[1 +(I / Oが消費/ CPU時間処理されました)。

  • 他の要因が閉塞を防ぐために、スレッドを引き起こすことが原因でCPUを集中的には、これは非常に簡単です、監査CPU =ライン上のスレッドの数は、我々は、一般的な監査CPU + 1を設定します。

おすすめ

転載: www.cnblogs.com/luizw/p/11798075.html