私が取り組んでいるプログラムでは、tbb::Parallel_reduce を使用しており、ユーザーはプログラムを途中でキャンセルできます。カスタム例外をスローすることでこれを実行しています。例外がスローされると、単一のスレッドのデストラクタが呼び出され、残りのスレッドは残されます。各スレッドはデータの一部 (処理に必要) のコピーを作成するため、非常に大きなメモリ リークが発生する可能性があります。通常、これは問題にはなりませんが、このコードは別のプログラム内で実行されているため、オペレーティング システムはメモリを解放できません。
これに関する主な質問は、例外がスローされたときに各スレッドのデストラクタを強制的に呼び出す方法、またはデータをクリーンアップできる別の方法を知っている人はいますか? どうもありがとうございました。