c - 完成后将openmp线程返回到单线程

标签 c macos openmp

我使用 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/

相关文章:

c - 当 -1L、1U 和 -1UL 是符号常量时,-1L < 1U 和 -1L > UL 的输出与声明为枚举常量时不同

c - 如何处理我的库中的多个 i/p 文件支持?

c++ - 将 OpenMP 与 clang 一起使用

c - 我在 matmul 函数上使用了 openMP 指令,它不起作用

c - C 中的 FTP : 331/530 Please specify password

c - 返回c中的结构体

iphone - 泛化对 NSLog 的调用

swift - 如何在 Xcode 中检查 "Foundation.Data"字节缓冲区中包含的字节?

macos - 如何向 OSX launchd plist 添加参数以将输出通过管道传输到日志文件?

c++ - 内部的 openmp 延迟