アプリケーション用のスレッドプールが必要であり、標準 (C++11 またはブースト) のものにできるだけ依存したいと考えています。基本的に必要なものを解決する非公式の(!)ブーストスレッドプールクラスがあることに気付きましたが、ブーストライブラリ自体にないため、避けたいと思います-なぜコアライブラリにまだないのですか?長年?
このページや他の場所のいくつかの投稿では、boost::asio を使用してスレッドプールのような動作を実現することを提案しています。一見、それは私がやりたいことのように見えましたが、私が見たすべての実装には、現在アクティブなタスクに参加する手段がないことがわかりました。そのため、私のアプリケーションでは役に立ちません。結合を実行するために、すべてのスレッドに停止シグナルを送信し、その後それらを結合します。ただし、それは私のユースケースでのスレッドプールの利点を完全に無効にします。これは、新しいタスクで新しいスレッドの作成が必要になるためです。
私がやりたいことは次のとおりです。
ThreadPool pool(4);
for (...)
{
for (int i=0;i<something;i++)
pool.pushTask(...);
pool.join();
// do something with the results
}
誰でも解決策を提案できますか (sourceforge で既存の非公式スレッド プールを使用する場合を除く)。ここで私を助けることができるC++ 11またはコアブーストに何かありますか?