tbb::flow::graph 中的节点之间是否有任何方法可以发送 "heavy" 类型?

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

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

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

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

更新 2: 使用 std::unique_ptr<> 在 flow_graph.h 行 287 中给出 C2280 'attempting to reference a deleted function'。

所以问题仍然悬而未决。

最大,

不幸的是 std::unique_ptr 没有 属性 CopyConstructible,这是 flow::graph.

传递对象消息的要求

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

此致, 克里斯