ジョブシステム
1フレームの処理を小さなジョブに分割し、依存関係を守りつつスレッドプールで実行するエンジンのスケジューラ。スレッドを手作業で管理せずに全CPUコアを使い切れる。
システムごとにスレッドを立てる代わりに、「このパーティクル500個を更新する」「このノードをカリングする」といった短いタスクを、コア数分のワーカーを持つプールへ振り分ける。ジョブは別のジョブへの依存を宣言でき、スケジューラはそこから依存グラフを組んで、独立したものを並列に流す。手の空いたワーカーは忙しいキューからジョブを奪う(ワークスティーリング)。
Naughty Dogのファイバー方式(GDC 2015)はジョブの一時停止と再開を安価にし、UnityのC# Job Systemがこのパターンを広く知らしめた。ただし効果が出るのは、データが配列として並び、データ指向で設計されている場合に限る。そうでなければ、ジョブ同士が同じキャッシュラインを奪い合うだけだ。