通常、スレッド バリア (つまり、boost::barrier) は、boost::barrier::wait を呼び出す必要があるスレッドの数を表す整数で初期化されます。すべてのスレッドは、条件が満たされるまでその時点で待機し、その後、すべてのスレッドが続行します。
初期化後に「waitCount」を設定できるスレッドバリアを実装することは可能ですか?
または、同じ動作をする同等のアプローチはありますか?
つまり、行った後:
int numWaiting = 2;
boost::barrier b( numWaiting );
新しい numWaiting 値を設定するメソッドはありません。
これが必要な理由は、基本的に、バリアが初期化された後、待機条件が満たされる前に、プロセスで使用可能なスレッドの数が増加する可能性があるためです。