アフィニティー

これらのメソッドは、キャッシュ・アフィニティーを最適化します。前に実行された別のタスクと同じスレッドで後のタスクを実行するヒントを提供します。次の操作を行います。

  1. 前のタスクで、id を記録する定義で note_affinity(id) をオーバーライドします。
  2. 後のタスクを作成する前に、ステップ 1 で記録した id を使用して set_affinity(id) を実行します。

id はヒントで、スケジューラーによって無視されます。

次の表は、このテンプレート・クラスのメンバーの詳細な情報を提供します。
メンバー 説明
affinity_id

task::affinity_id 型は、処理系定義の符号なし整数型です。値 0 は、アフィニティーがないことを示します。ほかの値は、特定のスレッドに対するアフィニティーを表します。 ゼロ以外の値に関して何も仮定しないでください。ゼロ以外の値のスレッドへのマッピングは、インテル® TBB ライブラリーに内部的に実装されます。

virtual void note_affinity ( affinity_id id )

次の場合、タスク・スケジューラーは execute() を呼び出す前に note_affinity を呼び出します。

  • タスクにアフィニティーがないが、アフィニティーを作成したスレッドとは異なるスレッドで実行する場合。
  • タスクにアフィニティーがあるが、アフィニティーで指定されたスレッドとは異なるスレッドで実行する場合。

id を記録するこのメソッドをオーバーライドし、後のタスクで set_affinity(id) の引数として使用できます。

効果: デフォルトの定義は効果がありません。

set_affinity ( affinity_id id )

このタスクのアフィニティーを id に設定します。id は、0 または note_affinity から取得した値のいずれかです。

affinity_id affinity() const

戻り値: set_affinity によって設定される、このタスクのアフィニティー。