次の機能を備えたマルチスレッド パイプライン データフロー フレームワークを実装しようとしています。
パイプラインは、非巡回有向グラフとして記述できます。各ノードは何らかの処理を実行し、任意のタイプの任意の数の入力と、任意のタイプの 1 つの出力を持ちます。
指定された入力データ インスタンスごとに、各ノードを 1 回以上実行しないでください。その後、結果をキャッシュする必要があります。ただし、このキャッシュは必要以上に長くメモリに保持するべきではなく、他のノードで必要なくなったら削除する必要があります。
各ノードは遅延評価をサポートする必要があります。つまり、別のノードが出力を必要とする瞬間にのみ実行する必要があります。
C++11 のマルチスレッド機能、特にstd::future
とstd::promise
を使用してこれを実装することは可能std::async
ですか? 誰でも手がかりを与えることができますか?