【发布时间】:2011-03-04 23:28:00
【问题描述】:
是否可以销毁 OpenMP 创建的线程?程序启动时,只有一个线程。在并行化部分之后,由于存在线程池,因此保留了多个线程。并行部分运行后有什么方法可以销毁这个池?
我问是因为我在动态库中使用 OpenMP,并且在线程运行时无法关闭库句柄(程序会出现段错误)。
谢谢
更多解释: 我将所有并行化代码放入模块(共享库)中。然后我加载模块并将一个派生自抽象基类的类传递给它。然后该模块并行“运行”该类。这样,我可以不使用并行化、OpenMP、MPI 或其他任何东西,并且可以在运行时甚至动态更改并行方案。但是 OpenMP 不会破坏线程,当需要手动 dlclose 库时,它会出现段错误,因为资源是从线程下面破坏的(我相信)。让程序在不关闭库的情况下完成现在可能还可以,但是将来可能仍然会出现想要手动关闭库的想法(考虑即时更改方案)。希望这是有道理的:) 谢谢
【问题讨论】:
标签: c++ multithreading openmp dynamic-library