Boostスレッドを使用してプログラムを作成しました。処理する情報を格納するために、2つのバッファー(ワーカースレッドごとに1つ)を割り当てました。彼らは座ってバッファに何かが表示されるのを待ってから、それを処理して結果を別のバッファに配置します。私のバッファ実装はスレッドセーフです。現在、メインスレッドはビジーです。バッファサイズがゼロになるまで待機しますが、バッファの制御を要求してサイズをチェックし続ける必要があるため、これは実際には非効率的です。両方のワーカースレッドが終了したことを通知するまで、メインスレッドをスリープ状態にする方法が必要です。これはを使用して達成できるとかなり確信してboost::condition_variable
いますが、2つのワーカースレッドでこれをどのように行うかはわかりません。
よろしくお願いします。
編集-また、boost::barrier
適切でしょうか?