パイプラインのような同期関数呼び出しを模倣するフロー グラフへのアダプターを作成しようとしています。しかし、ブロックして特定のトークンの出力を待つ方法がわかりません。wait_for_all
すべての値を待つ必要がないため、グラフを呼び出しても役に立ちません。誰でも解決策を提案できますか?
template <typename TOutput, typename TInput>
class FlowPathAdapter {
public:
TOutput operator()(const TInput& val) {
m_input->try_put(val);
TOutput result;
// What should be done here to ensure that
// m_output returns the result corresponding to this specific token?
m_output->try_get(result);
return result;
}
private:
// input and output are connected in some graph constructed outside the adapter
std::shared_ptr<tbb::flow::receiver<TInput>> m_input;
std::shared_ptr<tbb::flow::sender<TOutput>> m_output;
};