2017-01-01 135 views
0

以下C++代码适用于Intel TBB。这个代码也是由Flow Graph生成的。 我有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 * { 

下面是创建的编译错误

make_edge(result_join, result_reporter); 

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

我会glady提供所有TBB调用代码代码,但StackOverflow防止太多的代码与很少的描述。任何人都可以帮忙弄清楚这些错误吗? 谢谢

回答

2

您试图错误地使用function_node的输入。输入为tuple<char *, char *>的函数节点以tuple<char *, char *>输出为前导。

如果这是你想要的东西(有有两个输入到每个char *类型的节点,并char *输出),你应该使用indexer_node的组合(其中有多个输入端口,以及任何输入的任何端口将导致消息发出时的端口号和输入封装)连接到function_node,其中采用indexer_node的输出类型。请参阅文档,并询问您是否有任何问题。

+0

如果您需要节点仅在从其所有前置器接收输出时才被触发,则需要一个join_node。 https://software.intel.com/en-us/node/506236。有三种加盟政策;我猜你想要排队加入。 indexer_node立即转发从每个端口接收的每条消息;连接会等待,直到它在每个输入端口上至少有一个输入,然后它才转发它们。连接的输出是一个元组。 – cahuson

相关问题