2012-04-30 21 views
0

私は10スレッドのスレッドプールを使用するマルチスレッドアプリケーションを持っています。各スレッドは入力を処理するのに5分かかります。 n個の入力を処理するのにかかる合計時間を支配する法則/式がありますか?マルチスレッド理論的シナリオ

つまり、5分ごとに10個の入力を処理できるため、100個の入力を処理するには50分かかりますか?

+0

コードを共有できますか? –

+0

@RaviJainこれは単なる理論的なシナリオです – user837208

答えて

2

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

1

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

関連する問題