2012-10-15 42 views
1

在我正在使用的程序中,我們正在使用tbb :: Parallel_reduce並且用戶有能力在中途取消程序,我們通過拋出自定義異常來執行此操作。當拋出異常時,單個線程的析構函數被調用,而剩下的只剩下了,並且由於每個線程正在複製一些數據(需要處理),因此可能會有非常大的內存泄漏。通常這不會是一個問題,但是這個代碼在另一個程序中運行,所以操作系統將無法釋放內存。取消tbb Parallel_reduce導致內存泄漏

我對這個問題的主要問題是沒有人知道強制每個線程的析構函數被拋出時拋出異常或另一種能夠清理數據的方式。非常感謝你。

回答

1

看起來它固定在TBB 4.2,這裏是從變化的摘錄文件:

錯誤修正:

  • 固定parallel_reduce體對象的泄漏時執行 取消或正如達西哈里森所建議的那樣,拋出了一個例外。