0

10スレッドのスレッドプールを使用するマルチスレッドアプリケーションがあります。各スレッドは入力を処理するのに5分かかります。n個の入力を処理するのにかかる合計時間を管理する法則/公式はありますか?

つまり、5分ごとに10個の入力を処理できるので、100個の入力を処理するには50分かかるというのは正しいのでしょうか。

4

2 に答える 2

2

計算能力 (プロセッサ/コア) とハードウェア リソースの依存関係 (ハード ディスク、I/O 競合など) に加えて、データの依存関係も考慮する必要があります。たとえば、各入力の処理に、ロック (ミューテックス) が必要な他のすべてのスレッドによる共有データの更新が含まれる場合、合計スループットは 10 倍未満になります。 10コア。最大スピードアップは、クリティカル セクションの割合によって異なります。式が必要な場合は、有名なアムダールの法則を参照してください: en.wikipedia.org/wiki/Amdahl's_law

于 2012-04-30T14:34:30.930 に答える
1

実際には、必要な総計算能力を考慮する必要があります。たとえば、スレッドが作業を行うのに5分かかり、その間にプロセッサが完全に消費された場合、追加のスレッドは役に立ちません。反対に、プロセッサの使用率がゼロに近い場合(たとえば、すべての時間がI / Oの待機に費やされている場合)、提案された計算は機能します。したがって、計算で使用されている実際のリソースを考慮する必要があります。

于 2012-04-30T06:16:10.640 に答える