我使用 openmp
并行我的 C 代码中的特定区域:
#pragma omp parallel private()
{
...
}
当我检查进程时(通过 Mac OS X 中的 Activity Monitor),我注意到退出 #pragma
block 后线程数没有返回到 1。我是否需要写一些东西来使进程在完成后返回到单个线程上?
最佳答案
大多数 OpenMP 实现都使用线程池。线程不会被销毁,而是会进入休眠状态,并在需要它们的新并行区域时被唤醒。这样做既是为了提高效率,例如,减少创建新并行区域的开销,也是为了符合 OpenMP 规范中关于线程私有(private)变量的生命周期和可访问性。
关于c - 完成后将openmp线程返回到单线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45512440/