2012-10-15 36 views
1

在我正在使用的程序中,我们正在使用tbb :: Parallel_reduce并且用户有能力在中途取消程序,我们通过抛出自定义异常来执行此操作。当抛出异常时,单个线程的析构函数被调用,而剩下的只剩下了,并且由于每个线程正在复制一些数据(需要处理),因此可能会有非常大的内存泄漏。通常这不会是一个问题,但是这个代码在另一个程序中运行,所以操作系统将无法释放内存。取消tbb Parallel_reduce导致内存泄漏

我对这个问题的主要问题是没有人知道强制每个线程的析构函数被抛出时抛出异常或另一种能够清理数据的方式。非常感谢你。

回答

1

看起来它固定在TBB 4.2,这里是从变化的摘录文件:

错误修正:

  • 固定parallel_reduce体对象的泄漏时执行 取消或正如达西哈里森所建议的那样,抛出了一个例外。