Udostępnij za pośrednictwem


2.6.3 bariery dyrektywy

Bariery dyrektywy synchronizuje wszystkie wątki w zespole.W przypadku każdego wątku w zespole czeka, aż wszystkie inne osiągnęły ten punkt.Składnia bariery dyrektywy jest następująca:

#pragma omp barrier new-line

Po wszystkie wątki w zespole mógł napotkać bariery, każdego wątku w zespole rozpoczyna wykonywanie oświadczeń po dyrektywie bariery równolegle.Należy zauważyć, że ponieważ bariery dyrektywa nie ma instrukcji języka C, jako część jego składni, istnieją pewne ograniczenia dotyczące jego położenie w programie.Zobacz Dodatku C formalne gramatyki.Poniższy przykład ilustruje te ograniczenia.

/* 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
}