転送、バッファー、受信ポリシー

インテル® TBB の flow::graph で、サクセサーにメッセージを転送するノードは、プロパティーにおいて次の 2 つの転送ポリシーのいずれかが指定されています。

サクセサーに push できないメッセージを処理するためのポリシーは 2 つあります。

ノードがメッセージの受信を処理するためのポリシーは 2 つあります。

一部のサクセサーノードは、ノードの並列処理能力が十分かどうかに応じて、あるいはノードのポリシーに基づいて、メッセージを受け付けます。例えば、<rejecting> ポリシーを持つ並列処理が制限されていない function_node では、ノードにメッセージが push されると、ノードのボディーを実行するためのタスクが作成されるため、エッジが push から pull に切り替わることはありません。ノードの並列処理が制限されており、その制限に達した場合、プレデセッサーがメッセージを push しようとすると、ノードは入力エッジを push から pull に変更します。

以下の表で受信ポリシーが "switch" のノードは、プレデセッサーから pull を試みます。メッセージが失われないようにするには、プレデセッサーの "try_get()?" が ○ でなければなりません。

注意

reserving join_node は常に入力メッセージを予約します。reserving join_node への入力はすべて予約をサポートすべきです (以下の表で "try_reserve()?" が ○ でなければなりません)。

以下の表は、各ノードのポリシーの一覧です。

入力バッファー、出力バッファー、予約、および転送ポリシー

ノード

受信ポリシー

try_get()?

try_reserve()?

転送

機能ノード

source_node

--

broadcast-push

function_node<rejecting>

accept/switch

X

X

broadcast-push

function_node<queueing>

accept

X

X

broadcast-push

continue_node

accept

X

X

broadcast-push

multifunction_node<rejecting>

accept/switch

X

X

broadcast-push

multifunction_node<queueing>

accept

X

X

broadcast-push

バッファーノード

buffer_node

accept

single-push

priority_queue_node

accept

single-push

queue_node

accept

single-push

sequencer_node

accept

single-push

overwrite_node

accept

X

broadcast-push

write_once_node

accept once

X

broadcast-push

分割/結合ノード

join_node<queueing>

accept

X

broadcast-push

join_node<reserving>

switch

X

broadcast-push

join_node<tag_matching>

accept

X

broadcast-push

split_node

accept

X

X

broadcast-push

indexer_node

accept

X

X

broadcast-push

その他のノード

broadcast_node

accept

X

X

broadcast-push

limiter_node

accept/switch

X

X

broadcast-push

関連情報