2017-01-01 137 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

相關問題