C 完成后将openmp线程返回到单线程
我使用C 完成后将openmp线程返回到单线程,c,macos,openmp,C,Macos,Openmp,我使用openmp并行C代码中的特定区域: #pragma omp parallel private() { ... } 当我检查进程时(通过Mac OS X中的活动监视器),我注意到在退出#pragma块后,线程数没有返回到1。我是否需要编写一些东西来在完成后将进程返回到单个线程上?大多数OpenMP实现都使用线程池。线程不会被破坏,而是在需要它们的新的平行区域时进入睡眠和唤醒状态。这样做是为了提高效率,例如,这样可以减少创建新并行区域的开销,并且符合OpenMP规范中关于线程专用变量的
openmp
并行C代码中的特定区域:
#pragma omp parallel private()
{
...
}
当我检查进程时(通过Mac OS X中的活动监视器),我注意到在退出
#pragma
块后,线程数没有返回到1。我是否需要编写一些东西来在完成后将进程返回到单个线程上?大多数OpenMP实现都使用线程池。线程不会被破坏,而是在需要它们的新的平行区域时进入睡眠和唤醒状态。这样做是为了提高效率,例如,这样可以减少创建新并行区域的开销,并且符合OpenMP规范中关于线程专用变量的生存期和可访问性的要求。大多数OpenMP实现都使用线程池。线程不会被破坏,而是在需要它们的新的平行区域时进入睡眠和唤醒状态。这样做是为了提高效率,例如,这样可以减少创建新并行区域的开销,并且符合OpenMP规范中关于线程专用变量的生存期和可访问性的要求。。。。为了直接回答这个问题,OpenMP没有提供一种机制,您可以通过该机制指示它减少活动线程数。然而,正如这个答案所解释的,无论出于何种目的,这都不是一个问题。。。。为了直接回答这个问题,OpenMP没有提供一种机制,您可以通过该机制指示它减少活动线程数。然而,正如这个答案所解释的那样,无论出于何种目的,这都不是一个问题。