キューをオーバーフローから保護するようなものを持つことは可能ですがlimiter_node<T>
、キューに収まらないメッセージを破棄する代わりに、それらを他のノードに転送しますか? のようなものが欲しい
typedef std::string S;
using namespace tbb::flow;
source_node<S> input(g, Input(), false);
limiter_node<S> limiter(g, queue_len);
function_node<S, S> processor(g, threadpool_size, Processor());
function_node<S, int> output(g, serial, Output());
make_edge(input, limiter);
make_edge(limiter, processor);
make_edge(limiter.magic_forwarder_of_failed_deliveries_thank_you, output); // ???
make_edge(processor, output);
make_edge(output, limiter.decrement);
基本的に私は大量のブロッキング IO バウンド «ノード» でできるだけ多くのデータを処理し、残りを未処理の出力ノードに直接転送したいと考えています。