複数の CPU にまたがるスレッドを使用して並列化された単一の計算集約型プロセス X があります。各スレッドはストリーム出力を生成し、各ストリームは 2 番目のプロセス Y の独自のインスタンスに個別に接続する必要があります (スレッドと同じ数のプロセス Y が実行されます)。X と Y はそれぞれバイナリ形式の書き込みと読み取りを行うため、スループットは非常に良好です。I/O オーバーヘッドを最小限に抑えたいと考えており、そのための最善の方法を探しています。現時点で、私のセットアップは次のようになっています (2 つのスレッドのみで示されていますが、通常は 8 つ以上のスレッドがあります)。
exec 4> >( programY > out.4 )
exec 5> >( programY > out.5 )
programX-that-writes-to-fd-4-and-5
exec 4>&-
exec 5>&-
問題の 1 つは、bash のマニュアルに次のように記載されていることです。これは正確には明らかではありません。もう 1 つの問題は、終了を確立する良い方法が見つからないことです。現在、「lsof -c programY」を使用していますが、ハックのように感じます。より良い、または改善された解決策はありますか? ここで「与えられている」のは、X はマルチスレッドで計算量が多く、Y はシングルスレッドで計算量が多く、X の各スレッドは Y のインスタンスに接続する必要があるということです。