3

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

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

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

更新 2:使用 std::unique_ptr<> 使 C2280 在 flow_graph.h 第 287 行中“尝试引用已删除的函数”。

所以问题仍然存在。

4

1 回答 1

5

最大限度,

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

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

问候,克里斯

于 2015-10-30T14:23:46.317 回答