web-dev-qa-db-ja.com

クライアント/サーバーアーキテクチャでこれらのマルチスレッドモデルを使用する場合の長所と短所は何ですか

並列プログラミングの私のクラスでは、教師は3つのモデル、動的スレッド作成(要求に応じてスレッドを作成)、スレッドプール(固定量のスレッドを作成)、混合またはハイブリッド(最初に多数のスレッドを作成)について言及しましたが、需要が大きくなりすぎて、需要が通常に戻ったときに以前のスレッド数に戻る場合はさらに多く)

各モデルの長所と短所について、一般的なパフォーマンスの観点から、具体的に使用するのが最適な場合などに誰かが詳しく説明していただければ幸いです...

2
OiciTrap

簡単な非学術ビュー:

動的モデル:

  • 長所:必要なスレッド数のみを使用します。
  • 短所:処理中のスレッドの作成と削除のオーバーヘッド。動的スレッドの数がハードウェアでサポートされている制限を超えて増加する場合は、スレッド切り替えのオーバーヘッドも検討してください。
  • 典型的な使用例:スレッドが頻繁に待機していて、スレッド作成のパフォーマンスがI/O(新しい着信ネットワーク接続など)に比べて小さいイベント駆動型プロセス/セッション(I/Oなど)の処理。

スレッドプール:

  • 長所:スレッド管理のオーバーヘッドを最小限に抑えます。一定のスループット?
  • 短所:プールのサイズが大きすぎる場合(ハードウェアの容量や処理のニーズと比較して)、未使用のスレッドに不要な切り替えオーバーヘッドが発生する可能性があります。
  • 典型的な使用例:キューに入れられた入力のワークプロセスの処理。詳細 ここ

混合モデル:

  • 両方のモデルの利点(または注意しないと不便です!!)があります。 1つの可能なアプローチは、実行時に動的に決定される最適なサイズでプールのサイズを設定し、ハードウェアと処理のニーズを考慮してパフォーマンスを最大化することです。
  • ハイブリッドモデルの長所と短所は、一般的に分析できません。ケースごとに評価する必要があります。
2
Christophe