Partilhar via


2.6.3 Diretiva barrier

O barreira diretiva sincroniza todos os threads em uma equipe. Quando encontrado, cada thread na equipe aguarda até que todos os outros tiverem chegado neste ponto. A sintaxe do barreira diretiva é o seguinte:

#pragma omp barrier new-line

Depois que todos os threads na equipe tiveram a barreira, cada thread na equipe começa a executar as instruções após a diretiva de barreira em paralelo. Observe que, como o barreira diretiva não tem uma instrução de linguagem c como parte de sua sintaxe, há algumas restrições em sua colocação dentro de um programa. Consulte Apêndice C da gramática formal. O exemplo a seguir ilustra essas restrições.

/* ERROR - The barrier directive cannot be the immediate
*          substatement of an if statement
*/
if (x!=0)
   #pragma omp barrier
...

/* OK - The barrier directive is enclosed in a
*      compound statement.
*/
if (x!=0) {
   #pragma omp barrier
}