graph::reset() によるキャンセル済みグラフのリセット

graph::reset() によるキャンセル済みグラフのリセット#

未処理の例外、または task_group_context が明示的にキャンセルされたためグラフの実行がキャンセルされると、グラフとそのノードは不確定な状態になる可能性があります。例えば、グラフの明示的なキャンセルに示されているコードサンプルでは、入力 2 がバッファーに残される場合があります。しかし、バッファー内の残り以外にも、フローグラフの実行中に適用される他の最適化があり、ノードとエッジが不確定な状態になることがあります。グラフを再実行または再起動する場合は、グラフをリセットする必要があります。

try { 
    g.wait_for_all(); 
} catch ( int j ) { 
    cout << "Caught " << j << "\n"; 
    // 問題を解決する処理 
    g.reset(); 
    f1.try_put(1); 
    f1.try_put(2); 
    g.wait_for_all(); 
}