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();
  }

関連情報