我們有一段代碼,利用TBB產卵任務來執行一些處理,這是使用下面的TBB代碼初始化TBB線程池完成的(相匹配的內核數量):TBB產卵任務內存泄漏
tbb::task_scheduler_init(8);
然後我們想要產卵我們用下面的代碼(其中MainTask的從TBB ::任務類派生的)每個任務:
task = new (tbb::task::allocate_root()) MainTask(theAction, theOutputData);
tbb::task::enqueue(*task);
當我們運行代碼,我們開始的時候使用一定量的內存,然後隨着程序執行併產生新的任務,如上所述,內存使用量隨着時間逐漸增加。執行40分鐘後,從12KB增加到213KB。這顯然不是我們任何處理代碼的結果,而且似乎是TBB沒有從TBB allocate_root任務中釋放內存的結果,我們一旦完成了他們的執行,TBB allocate_root任務就像我們所期望的那樣。
這是怎麼發生的?有什麼我們需要做的,以解決這個問題,或者有沒有一種替代方法來產生TBB任務而不使用allocate_root方法來解決這個問題?