我想在C++中執行後序樹遍歷。樹可以很深,我不能使用遞歸(它耗盡了堆棧)。相反,我創建了一個將所有內容放在堆上的std::stack<...>
,並在while循環中遍歷樹,而不是使用函數調用。這很好。TBB task_groups不使用堆棧
現在我想使用TBB並行化整個過程。我正在考慮在每個節點上創建一個task_group
,並在其每個子節點上運行相同的functor
。但在我看來,這會遇到同樣的問題,就像我以前的樹深度一樣:在最深的路徑的每個節點上運行functor
將從堆棧中消耗掉一些東西,直到整個東西用完。
有沒有辦法解決這個問題?還是我想象整個事情; task_group::wait()
背後有什麼魔法可以避免這個問題?
感謝您的回答。我認爲明確的延續是要走的路。如果我理解正確傳遞TBB教程的延續,它應該避免我的問題。我想,是時候進行實驗了。 – foxcub
如果您有任何實驗結果,請將它們發佈到此處 - 我也是qurious的;) –