我很擅长使用tbb :: flow,并希望创建一个图表,其中有一部分令人尴尬地平行。因此,我们的想法是让一个消息进入一个执行某些预处理的节点,然后可以制定一组可以并行执行的任务。然后数据在multifunction_node中进行聚合,该函数将结果发送到几个地方。
-------------- ------
|parallel nodes| |Output|
----------- /|--------------|\ ---------- / ------
msg -> |pre-process| -|parallel nodes|- |aggregator|
----------- \|--------------|/ ---------- \ ------
|parallel nodes| |Output|
-------------- ------
现在聚合器无法发送它的工作直到工作完成。因此需要跟踪预期的答案数量。我可以使用tbb :: flow :: graph执行此操作,还是应该创建一个嵌入并行的函数节点?其他想法或选择?
如果我能用tbb :: flow做什么节点类型和排队策略?
另一种思考方式是使用MapReduce进行一些预处理,并将结果以略微不同的形式发送到几个不同的地方。