有什么方法可以在 tbb::flow::graph 中的节点之间发送"heavy"类型?

Is there any method to send "heavy" types between nodes in tbb::flow::graph?

本文关键字:之间 节点 heavy 类型 graph 方法 什么 flow tbb      更新时间:2023-10-16

我需要在tbb::flow::graph(英特尔tbb库)中的节点之间发送一些"重"类型,即其中包含动态数组的结构。如果我试图在一个节点中创建这样一个结构的实例,并将其上的指针发送到另一个节点,我会得到访问冲突(这是意料之中的,因为我试图使用来自另一个线程的数据)。

所以传递这些参数的唯一方法是使用适当的复制构造函数按值传递,不是吗?但是我们会浪费很多时间去复制。。。

更新:πάγταῥεῖ建议使用std::unique_ptr通过节点传递此类类型。但恐怕我不明白该如何实施。例如,如何将std::unique_ptr与source_node一起使用?

使用std::unique_ptr<>更新2:在flow_graph.h行287中给出C2280"试图引用已删除的函数"。

所以这个问题仍然悬而未决。

最大

不幸的是,std::unique_ptr没有属性CopyConstructible,这是flow::graph传递对象消息的要求。

您可以尝试std::shared_ptr,它确实具有属性。我们修复了缓冲区中对象保留的问题(这导致大型对象被保留,直到图形被重置())。如果你发现它有任何问题,请告诉我们。

谨致问候,Chris