Wiązanie A.20 bariery dyrektyw
Dyrektywa wiążące zasady wywołania dla bariery dyrektywy powiązać najbliższy otaczający parallel dyrektywy.Aby uzyskać więcej informacji na wiążąca dyrektywa, zobacz ppkt 2.8 na stronie 32.
W poniższym przykładzie wywołanie z główne do podrzędny_2 jest zgodny z ponieważ bariery (w sub3) jest powiązana w regionie równoległych podrzędny_2.Wywołanie z główne do jako Unicode jest zgodny z ponieważ bariery wiąże równoległych regionie podprocedury podrzędny_2.Wywołanie z główne do sub3 jest zgodny z ponieważ bariery nie jest powiązana z dowolnym regionie równoległe i jest ignorowana.Ponadto należy zauważyć, że bariery synchronizuje tylko zespołu wątków w otaczającym regionie równolegle i nie wszystkie wątki utworzone w jako Unicode.
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);
}