如何从TBB :: Flow :: Graph中删除/取消消息
How to remove/cancel a message from tbb::flow::graph?
我已经构造了一个由几个function_node
对象组成的tbb::flow::graph
。在执行期间,我将多个消息传递到图表中(从〜10到〜100000(。有时,其中一个节点会引发异常。如果是这样,则取消整个图的执行,这意味着所有消息均已丢弃。但是,我的消息彼此独立,我不希望他们的执行停止。
我可以直接在节点内捕获异常,但是当发生这种情况时,消息的进一步处理将是没有意义的。
所以我的问题是:如何从图中取消或删除单个消息,而无需取消图表中已经存在的其他消息?
对于可能引发异常的节点,使用multifunction_node
而不是function_node
。multifunction_node
的身体函数接受其输出端口的元组,与function_node
不同,应明确将消息发送到这些端口。因此,multifunction_node
可以丢弃/删除消息,或为每个输入创建多个输出。
请注意,multifunction_node
的多个输出端口不为每个后继者假设一个单独的端口。您可以拥有一个单个输出端口并将所有后继者连接到它;输出消息将以与function_node
相同的方式向每个继任者广播。但是,多个输出端口允许multifunction_node
不受单一类型的输出的限制,这使其成为流程图中复杂消息调度的非常灵活的仪器。
有关不同节点的消息处理的更多信息,请参见单孔与广播播音,其他流程图概念以及TBB文档中的节点行为策略。
相关文章:
- 将数组的地址分配给变量并删除
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- C/C++编译器通常会删除重复的库吗
- 挂起和取消挂起一个文件DLL
- 文件删除(使用取消链接)与释放所有磁盘空间之间的延迟
- 删除通过取消引用新对象初始化的对象
- 是否可以删除取消引用的指针
- 从 QTreeView 中删除项目时取消选择所有行
- 从矢量C++中删除时,矢量迭代器不可取消引用
- 如何从TBB :: Flow :: Graph中删除/取消消息
- 如何从属性表中删除确定,取消和应用按钮
- C/C++:取消分配或删除动态创建的内存块
- 我应该删除一个取消引用的指针数组吗?
- 优化器删除指针取消引用行
- 正在从矢量中删除取消引用的元素
- SortedList C++从数组中删除和取消删除元素
- 何时在C++中删除/取消引用
- 我们是否应该在取消注册时删除观察者
- 取消脱壳:删除模板角度之间的空间不起作用
- 我应该使用哪个容器进行随机访问,廉价的添加和删除(没有取消/分配),具有已知的最大大小