ほとんどのアプリケーションには、複数のノードとノードを接続するエッジが含まれています。フローグラフのインターフェイスでは、エッジはメッセージを渡す指示チャネルです。エッジは、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 へ自動的に渡されます。