boost::thread_group を書きたいと思います。スレッド内のコールバックが何であるかを正しく理解していると仮定すると、それを自分のプログラムにも適用したいと思います。
次の例を見つけました: (コールバックなしのthread_group )
boost::thread_group group;
for (int i = 0; i < 15; ++i)
group.create_thread(aFunctionToExecute);
group.join_all();
コールバックに変更したい場合は、&
前に追加するだけaFunctionToExecute
ですか?
次の場合にコールバックを使用することを考えました: 2 つのコアがあり、for ループが 0 から 99 (100 要素) であると仮定します。100 個のスレッドを開く代わりに、2 つのスレッド (この例ではコアの数) のみを開き、各スレッドが正しい変数で計算を終了した後、完了したことを送信し、実行する順序を待ちたいと思います。 100 個の要素すべてが計算されるまで、繰り返します。
これを作成するために組み合わせることができる例またはいくつかの例を誰かが知っていますか?
私はスレッド化の経験があまりないので、group_threads を適用するこの方法が「正しい」方法であることを知りたいですか?
よろしく