我需要在tbb :: flow :: graph(Intel TBB库)中的节点之间发送一些“重”类型,即在其中包含动态数组的结构。如果我尝试在一个节点中创建这样的结构的实例并将指针发送到另一个节点,我会得到访问冲突(这是预期的,因为我尝试使用来自另一个线程的数据)。
所以传递这些参数的唯一方法是使用适当的copy-constructor按值传递它们,不是吗?但是,我们将浪费大量时间进行复制......
更新:πάνταῥεῖ建议使用std :: unique_ptr通过节点传递此类型。但我担心我不明白如何实现这一点。例如,如何将std :: unique_ptr与source_node一起使用?
更新2:使用std :: unique_ptr<>使得C2280'试图在flow_graph.h第287行中引用一个已删除的函数。
所以问题仍然存在。
答案 0 :(得分:2)
最大,
不幸的是,std::unique_ptr
没有属性CopyConstructible
,这是flow::graph
传递的对象消息的要求。
您可以尝试拥有该属性的std::shared_ptr
。我们已经解决了在缓冲区中保留对象的问题(导致大型对象被保留,直到图形被重置())。如果您发现任何问题,请告诉我们。
此致 克里斯