私はパイプライン パターンについて、並行性を活用するという点で一般的で役立つパターンとしてよく読んでいます。しかし、Task Parallel Pattern と比較して Parallel Pipeline パターンに何か利点があるのだろうか。
パイプラインに A、B、C の 3 つのステージがあるとします。データを処理する必要があるとき、A はそれを受け取り、処理して B に渡します。次のデータ チャンクが入ってくると、同じことが起こり、A と B同時に働いています。
したがって、パイプラインのさまざまなステージを並行して実行できますが、(タスク並列処理パターンのように) 並行して動作する3 つのパイプラインを使用すると、まったく同じ状況が得られます。2 つのデータ チャンクが次々に受信されると、最初のチャンクがパイプライン 1 によって取得され、次のチャンクがパイプライン 2 によって取得され、両方のチャンクが同時に処理されます。
さらに、並列パイプラインの多くの問題を簡単に想像できます。ステージ間のバッファーがブロック (またはオーバーフロー) する可能性がある、処理速度の点で 1 つのステージが支配的であるため、最も遅いステージより前のすべてのステージを待機する必要があるなど...
これらの問題は、タスク並列処理パターンには存在しません。さらに、このパターンは、チャンクがパイプラインの最初のステージで処理できるよりも速く到着する場合 (またはチャンクを同時にフェッチできる場合) により柔軟です。
では、なぜ並列パイプライン パターンを使用する必要があるのでしょうか。
アイデアをお寄せいただきありがとうございます。