Associazione A.20 le direttive di barriera

La richiesta direttiva di regole di associazione per un oggetto barriera direttiva da associare a un tipo più vicina parallel direttiva.Per ulteriori informazioni sull'associazione direttiva, vedere parte 2,8 nella pagina 32.

Nell'esempio seguente, la chiamata da principale in sub2 è conforme perché barriera (in sub3) associa all'area parallela in sub2.la chiamata da principale in sub1 è conforme perché barriera associazioni all'area parallela nella subroutine sub2.la chiamata da principale in sub3 è conforme perché barriera non è associato ad alcuna area parallela e viene ignorato.Si noti inoltre che barriera sincronizza unicamente il team di thread nell'area parallela di inclusione e di non tutti i thread creati in sub1.

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);
}