Systems」の日本語参考訳です。一般的になりつつあります。特定のプラットフォームに依存せずその機能を最大限活用できるように、ここではコア数に依存しないゲーム・エンジン・コードの記述方法を紹介します。タスク処理を実装することで、コア数の増加に伴いプログラムはスケーリングし、ハードウェアの機能を最大限活用してゲームを楽しめます。サンプルプログラムを例に、シングルスレッドのアニメーション・システムを、タスク処理を使用するアニメーション・システムに変換してみましょう。タスクとは、システムの独立した作業単位です。タスクはコールバック関数として実装されます。ここでは、アニメーション・システムのタスク処理について取り上げ、それぞれのタスクはシーンのモデルを描画します。タスクセットとは、アプリケーションのスケジューリング・プリミティブです。作業をスケジューリングするために、アプリケーションはタスクセットを生成し、タスク関数と依存関係の情報を指定します。タスクセット内のタスクは非同期に実行されます。タスクセットは、その依存関係が満たされた場合のみ実行されます。内部で使用され、すべての作業スレッドの生成と管理、そしてタスクの実行を行います。スレッディング・ビルディング・ブロックを使用しています。コアシステムにおけるタスクセットの依存性グラフを表したものです。スケジューラーは、すべての依存関係が満たされると、タスクセットにあるそれぞれのタスクを直ちに実行します。タスクセットに対するグローバルなデータへのポインター。このデータは不変のバッファーと考えることができます。よって実データが所有されているわけではないので、タスクセットを実行している間、データが有効であることを、アプリケーションで確認する必要があります。スケジューラーによって生成された最大スレッド数までの範囲のインデックス。(ロックを利用しない)・アクセスが可能になります。持つことを保証します。オブジェクトの配列を生成します。オブジェクトを選択できます。タスク関数で実行中のタスクを示します。このインデックスは、リストからタスクの作業を選択するのに使用されます。サンプルプログラムでは、描画するモデルを選択するのに使用しています。タスクセットで実行するようにスケジューリングされているタスクの合計数。処理するオブジェクト群にマップできます。効率良いタスクを生成するには、プロセッサーのアーキテクチャーを活用して、スケジューラーができるだけ効率良く作業をコアに分配できるようにする必要があります。次のヒューリスティックにより、タスクの実行を最適化できます。タスクの実行時間はタスクセットの合計実行時間のほんの一部でなければならない。これにより、スケジューラーはコア間で作業の分配を最適化できます。タスクのスケジューリングには一定の時間がかかるため、この時間を最小限に抑えつつ、最高のスケーリングを達成するには、最適なタスク数を使用することが重要になります。以上のモデルがある場合にのみ、このヒューリスティックが達成できます。タスクカウントを使って各タスクで処理されるデータ量を調整するのが最良の方法といえるでしょう。