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