A.15 确定使用的线程数

考虑以下错误的示例 (对于第 37 页) 的 第3.1.2部分 :

np = omp_get_num_threads(); // misplaced 
#pragma omp parallel for schedule(static)
    for (i=0; i<np; i++)
        work(i);

代码中的顺序切片的 omp_get_num_threads() 调用返回 1,因此, np 始终等于 1 在前面的示例中。 若要确定适合并行区域将部署线程数,调用应在并行区域中。

下面的示例演示如何复盖此过程,不包括查询线程数:

#pragma omp parallel private(i)
{
    i = omp_get_thread_num();
    work(i);
}