質問: 10000; // 実行(オブジェクト数、関数ポインタ、void*のデータ). JobManager.Start( num, pFunc, pData); // 待機. JobManager.Join(); ``` std::threadは、コンストラクタの時点で関数ポインタを渡さなければならず また、スレッド生成時にはかなりのコストがかかる為 ゲームのように毎フレームStart()、Join()を実行するのは困難だと思います。 std::threadでジョブシステムを実装することは難しいのでしょうか? 以上、よろしくお願いいたします。
回答: 質問はC++11とのことですので条件を満たしませんが、C++17ですと並列アルゴリズムが導入されています。 ``` std::vector data; std::for_each(std::execution::par, begin(data), end(data), pFunc); ``` とやると各`data`に対して`pFunc`が並列に実行されます。実装依存かとは思いますが、スレッドプールが使われるのではないかと予想しています。