2.6.3 barrier-Direktive
Die Barriere-Direktive synchronisieren alle Threads in einem Team. Wenn er festgestellt wird, wird jeder Thread im Team, bis alle anderen diesen Punkt erreicht haben. Die Syntax der Barriere-Direktive sieht wie folgt aus:
#pragma omp barrier new-line
Schließlich haben Threads im Team die Barriere erreicht, jeder Thread im Team beginnt, die nach den Anweisungen direktiven Barrieren parallel ausgeführt werden. Da die Barriere-Direktive Wechselstrom-Sprachanweisung nicht als Teil der Syntax haben, jedoch einige Einschränkungen bezüglich ihrer Platzierung innerhalb eines Programms vorhanden ist. Weitere Informationen finden Sie unter Anhang C für die formale Grammatik. Das folgende Beispiel verdeutlicht diese Einschränkungen.
/* 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
}