Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 完成后将openmp线程返回到单线程_C_Macos_Openmp - Fatal编程技术网

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没有提供一种机制,您可以通过该机制指示它减少活动线程数。然而,正如这个答案所解释的那样,无论出于何种目的,这都不是一个问题。