我使用openmp
来平行我的C代码中的特定区域:
#pragma omp parallel private()
{
...
}
当我检查过程时(通过Mac OS X中的Activity Monitor),我注意到退出#pragma
块后线程数不会返回到1。完成后,我是否需要编写一些内容以使进程返回到单个线程?
答案 0 :(得分:3)
大多数OpenMP实现都使用线程池。线程不会被破坏,而是在需要它们的新并行区域时进入休眠状态并唤醒。这样做是为了提高效率,例如,减少创建新并行区域的开销,以及符合关于线程私有变量的生命周期和可访问性的OpenMP规范。