次の方法で共有


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);
}