A.5 Verwenden der wichtigen Direktive

Im folgenden Beispiel werden einige critical-Direktive (2.6.2 Abschnitt auf Seite 18).Im Beispiel wird ein Queuing Modell, in dem eine Aufgabe aus der Warteschlange entfernt und gearbeitet wird.Um mit denen mehrere Threads zu schützen, die die gleiche Aufgabe aus der Warteschlange zu entfernen, muss der aus der Warteschlange entfernende Vorgang in einem critical-Abschnitt.Da die beiden Warteschlangen in diesem Beispiel unabhängig sind, werden sie durch critical-Direktive mit unterschiedlichen Namen, Xaxis und Yaxisgeschützt.

#pragma omp parallel shared(x, y) private(x_next, y_next)
{
    #pragma omp critical ( xaxis )
        x_next = dequeue(x);
    work(x_next);
    #pragma omp critical ( yaxis )
        y_next = dequeue(y);
    work(y_next);
}