Freigeben über


A.24 Beispiel der privaten Klausel

Die private Clause (2.7.2.1 Abschnitt auf Seite 25) eines parallelen Bereichs ist nur wirksam ist für den lexikalischen Wertebereich des Bereichs, für den keine dynamischen Wertebereich des Bereichs.Daher im folgende Beispiel verwendet einen beliebigen a-Variable aus der for innerhalb der Schleife in der Routine f verweist eine private Kopie von A, während eine Verwendung in Routine g das globale Averweist .

int a;

void f(int n) 
{
    a = 0;

    #pragma omp parallel for private(a)
    for (int i=1; i<n; i++) 
    {
        a = i;
        g(i, n);
        d(a);     // Private copy of "a"
        ...
    }
    ...

void g(int k, int n) 
{
    h(k,a); // The global "a", not the private "a" in f
}