C++でポストオーダーツリートラバーサルを実行したいと思います。ツリーが非常に深くなる可能性があるため、再帰を使用できません(スタックを使い果たします)。代わりに、std::stack<...>
すべてをヒープに配置するを作成し、関数呼び出しではなく、whileループでツリーをトラバースします。これはうまくいきます。
ここで、TBBを使用してプロセス全体を並列化したいと思います。私はtask_group
すべてのノードでを作成しfunctor
、その子のそれぞれで同じものを実行することを考えていました。しかし、これは以前と同じツリーの深さの問題にfunctor
遭遇することになります。最も深いパスの各ノードでを実行すると、すべてがなくなるまでスタックから何かが失われます。
この問題を解決する方法はありますか?それとも私はすべてを想像していますか?task_group::wait()
この問題を回避 する魔法が背後にありますか?