ほとんどのアプリケーションには、複数のノードとノードを接続するエッジが含まれています。フローグラフのインターフェイスでは、エッジはメッセージを渡す指示チャネルです。エッジは、make_edge( p, s ) 関数を呼び出して作成します。引数は p (サクセサー) と s (プレデセッサー) の 2 つです。出力する前に受け取った値の 2 乗を計算する 2 番目のノードを追加し、最初のノードへエッジで接続するように、「ノード」トピックで取り上げた例を変更します。
graph g; function_node< int, int > n( g, unlimited, []( int v ) -> int { cout << v; spin_for( v ); cout << v; return v; } ); function_node< int, int > m( g, 1, []( int v ) -> int { v *= v; cout << v; spin_for( v ); cout << v; return v; } ); make_edge( n, m ); n.try_put( 1 ); n.try_put( 2 ); n.try_put( 3 ); g.wait_for_all();
function_node が n と m の 2 つになりました。make_edge を呼び出すと、n から m へのエッジが作成されます。ノード n は同時実行数を unlimited にして作成していますが、m は同時実行数を 1 に制限して作成しています。n の呼び出しはすべて並列に処理できますが、m の呼び出しはシリアルに処理されます。n から m へのエッジがあるため、n が返す値 v はそれぞれ、ランタイム・ライブラリーによってノード m へ自動的に渡されます。