A.12 za pomocą Atomowej dyrektywy
Poniższy przykład pozwala uniknąć wyścigu (aktualizacje jednoczesne elementem x przez wiele wątków) za pomocą atomic dyrektywy (sekcji 2.6.4 na stronie 19):
#pragma omp parallel for shared(x, y, index, n)
for (i=0; i<n; i++)
{
#pragma omp atomic
x[index[i]] += work1(i);
y[i] += work2(i);
}
Zaletą korzystania z atomic dyrektywy w tym przykładzie jest równe aktualizacje dwóch różnych elementów x występować równolegle.Jeśli critical dyrektywy (sekcji 2.6.2 na stronie 18) były używane zamiast, a następnie aktualizuje wszystkie elementy z x byłyby wykonywane szeregowo (chociaż w dowolne gwarantowana zamówienia).
Należy zauważyć, że atomic dyrektywę stosuje się tylko do instrukcji c lub C++, niezwłocznie po jej.W związku z elementów y nie są aktualizowane w sposób atomowy w tym przykładzie.