2017-01-01 18 views
0

次のC++コードはIntel TBB用です。このコードは、フローグラフによっても生成されました。 私は2個のコンパイルエラーを持っている:ここではTBB C++マルチスレッドエラー:呼び出しに一致する関数がありません

No matching function for call to 'make_edge' 
No matching function for call to 'make_edge' 

は定義を持つコードです:ここでは

function_node< tbb::flow::tuple<char *,char *>, char * > result_reporter(position3_g0, 1, [](const tbb::flow::tuple<char *,char *> & in) -> char * {... 

function_node< char *, char * > sott_target_node(position3_g0, unlimited, [](char *buffer) -> char * { 

は私がgladyすべて提供するコンパイルエラーに

make_edge(result_join, result_reporter); 

make_edge(sott_target_node, input_port<2>(result_join)); 

を作成TBB呼び出すコードですコードではなく、StackOverflowはあまりにも多くのコードを防止します。いずれか1つは、これらのエラーを把握するのに役立つことができますか? ありがとう

答えて

2

function_nodeの入力を誤って使用しようとしています。 tuple<char *, char *>の入力を有するfunction_nodeは、tuple<char *, char *>出力を有する先行者を取る。この場合は

は、あなたが望むものである任意の上の複数の入力ポートを備えていindexer_nodeの組み合わせを(使用する必要があり、かつ任意の入力(2つのchar *タイプの各ノードへの入力、およびchar *の出力があること)ポートは、indexer_nodeの出力タイプをとるfunction_nodeに接続するポート番号と入力がラップされたメッセージを出力します)。ドキュメントを参照して、質問があるかどうかを尋ねてください。

+0

ノードがすべての先行ノードからの出力を受け取ったときにのみ起動される必要がある場合は、join_nodeが必要です。 https://software.intel.com/en-us/node/506236。参加するには3つのポリシーがあります。キューイングに参加したいと思うでしょう。 indexer_nodeは、各ポートから受信した各メッセージをただちに転送します。結合は、各入力ポートで少なくとも1つの入力が転送されてから転送されるまで待機します。結合の出力はタプルです。 – cahuson

関連する問題