グラフを実装するために使用されるコンポーネントは次の 3 つです。
graph オブジェクト
ノード
エッジ
graph オブジェクトは、フローグラフに基づいて作成されるタスクの所有者です。フローグラフの実行に関連するすべてのタスクの完了を待つ必要がある場合、graph で待機します。また、エッジは、graph との外部相互作用を登録して、フローグラフの所有の下でタスクを実行できます。
ノードは、ユーザー定義関数オブジェクトを呼び出すか、ほかのノードとやり取りするメッセージを管理します。グラフで処理するアイテムをバッファー、フィルター、ブロードキャスト、オーダーする事前定義ノードもあります。
エッジは、ノード間の接続で、make_edge 関数を呼び出すことにより作成されます。
フローグラフ関連のタスクは、そのフローグラフの task_group_context で実行されます。フローグラフを作成するときにコンテキストが指定されていない場合、新しいコンテキストが作成され、エンクロージング・コンテキストにバインドされます。
フローグラフのノードのボディーが実行されるコンテキストは、そのノードのグラフです。そのノードでキャンセルまたは例外が発生すると、そのグラフのコンテキストはキャンセルされます。必要な場合、スローされた例外がさらなる処理のためにエンクロージング・コンテキストに渡されます。