C++11を使用したジョブシステムの実装方法について
お世話になっております。
ゲームで使用する為の
std::threadを使ったジョブシステムが作れないと考えています。
想定しているインタフェースとしては以下の通りです。
// コア数を指定してその分std::threadを生成
int threadNum = 8;
JobManager.Create( threadNum );
//実行時
int num = 10000;
// 実行(オブジェクト数、関数ポインタ、void*のデータ).
JobManager.Start( num, pFunc, pData);
// 待機.
JobManager.Join();
std::threadは、コンストラクタの時点で関数ポインタを渡さなければならず
また、スレッド生成時にはかなりのコストがかかる為
ゲームのように毎フレームStart()、Join()を実行するのは困難だと思います。
std::threadでジョブシステムを実装することは難しいのでしょうか?
以上、よろしくお願いいたします。