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.
Im folgenden Beispiel werden Racebedingungen (gleichzeitige Aktualisierungen eines Elements durch mehrere Threads von x ) durch die atomic-Direktive (2.6.4 Abschnitt auf Seite 19):
#pragma omp parallel for shared(x, y, index, n)
for (i=0; i<n; i++)
{
#pragma omp atomic
x[index[i]] += work1(i);
y[i] += work2(i);
}
Der Vorteil der Verwendung der atomic-Direktive in diesem Beispiel besteht darin, dass Aktualisierungen von zwei verschiedenen Elementen von x ermöglicht, dass parallel ausgeführt.Wenn critical-Direktive (2.6.2 Abschnitt stattdessen auf Seite 18) verwendet wurden, dann würden alle Aktualisierungen auf die Elemente von x seriell ausgeführt (obwohl nicht in einer garantierten Reihenfolge).
Beachten Sie, dass die atomic-Direktive nur für C- oder C++-Anweisung unmittelbar nach deren gelten.Daher werden atomar y von Elementen in diesem Beispiel nicht aktualisiert.