Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Aufruf richtungweisende Bindungsregel, damit Barriere-Direktiven nächsten übergeordneten parallel die Direktive binden.Weitere Informationen zu richtungweisende Bindung finden Sie unter Abschnitt 2.8 auf Seite 32.
Im folgenden Beispiel ist der Aufruf von main zu sub2 kompatibel, da Barriere (in sub3) zum parallelen Bereichs in sub2bindet.Der Aufruf von main zu sub1 kompatibel ist, da Barriere zum parallelen Bereichs in der Unterroutine sub2bindet.Der Aufruf von main zu sub3 kompatibel ist, da Barriere keinem parallelen Bereich gebunden wird und wird ignoriert.Beachten Sie außerdem, dass Barriere nur das Team von Threads im einschließenden parallelen Bereich und nicht in allen Threads synchronisiert sub1erstellt werden.
int main()
{
sub1(2);
sub2(2);
sub3(2);
}
void sub1(int n)
{
int i;
#pragma omp parallel private(i) shared(n)
{
#pragma omp for
for (i=0; i<n; i++)
sub2(i);
}
}
void sub2(int k)
{
#pragma omp parallel shared(k)
sub3(k);
}
void sub3(int n)
{
work(n);
#pragma omp barrier
work(n);
}