A.15 Determinando o número de threads usados
Considere o seguinte exemplo incorreto (para seção 3.1.2 na página 37):
np = omp_get_num_threads(); // misplaced
#pragma omp parallel for schedule(static)
for (i=0; i<np; i++)
work(i);
O omp_get_num_threads() chamar retorna 1 na seção serial do código, então, np será sempre igual a 1, no exemplo anterior. Para determinar o número de threads que serão implantados para a região paralela, a chamada deve ser dentro da região paralela.
O exemplo a seguir mostra como reconfigurar este programa sem incluir uma consulta para o número de segmentos:
#pragma omp parallel private(i)
{
i = omp_get_thread_num();
work(i);
}