3

tbb::flow::graph (Intel TBB ライブラリ) のノード間で「重い」タイプ、つまり動的配列を含む構造体を送信する必要があります。あるノードでそのような構造のインスタンスを作成し、そのポインタを別のノードに送信しようとすると、アクセス違反が発生します (別のスレッドからのデータを使用しようとするため、これは予期されることです)。

そのような引数を渡す唯一の方法は、適切なコピーコンストラクターを使用して値で渡すことですよね? しかし、それではコピーに多くの時間を浪費してしまいます...

更新: πάντα ῥεῖ は、 std::unique_ptr を使用してそのような型をノードに渡すことを提案しています。しかし、私はそれを実装する方法を理解していないのではないかと心配しています。たとえば、source_node で std::unique_ptr を使用する方法は?

更新 2: std::unique_ptr<> を使用すると、flow_graph.h 行 287 内で C2280 '削除された関数を参照しようとしています' が発生します。

したがって、質問はまだ開かれています。

4

1 に答える 1

5

マックス、

残念ながら、には、オブジェクト メッセージが渡されるための要件であるstd::unique_ptrプロパティがありません。CopyConstructibleflow::graph

std::shared_ptrプロパティを持っている を試すことができます。バッファ内のオブジェクトの保持に関する問題を修正しました (これにより、グラフが reset() されるまで大きなオブジェクトが保持されていました)。問題が見つかった場合は、お知らせください。

よろしく、クリス

于 2015-10-30T14:23:46.317 に答える