Freigeben über


A.23 Beispiele der geordneten Direktive

Es ist möglich, mehrere geordnete Abschnitte mit for verfügen, das der ordered-Klausel angegeben wird.Im ersten Beispiel ist inkompatibel, da die API Folgendes angegeben wird:

„Eine Iteration einer Schleife mit einem for Konstrukt darf die gleichen ordered-Direktive nicht mehrmals ausführen, und sie dürfen nicht mehr als eine ordered-Direktive ausführen“. (Siehe 2.6.6 Abschnitt auf Seite 22)

In diesem nicht kompatiblen Beispiel werden alle Iterationen 2 geordnete Abschnitte aus:

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    #pragma omp ordered
    { ... }
    ...
    #pragma omp ordered
    { ... }
    ...
}

Im Folgenden kompatible Beispiel wird for mit mehr als einem geordneten Abschnitts veranschaulicht:

#pragma omp for ordered
for (i=0; i<n; i++) 
{
    ...
    if (i <= 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
    (i > 10) 
    {
        ...
        #pragma omp ordered
        { ... }
    }
    ...
}