Freigeben über


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
}