A.5 Utilisation de la directive critical
L'exemple suivant inclut plusieurs directives d' critical (section 2.6.2 à la page 18). L'exemple illustre un modèle de mise en file d'attente en exécutant une tâche est retirée et utilisée de la file d'attente. Afin de se protéger contre plusieurs threads retirant la même tâche, l'opération retirante de la file d'attente doit se trouver dans une section d' critical . Étant donné que les deux files d'attente dans cet exemple sont indépendantes, elles sont protégées par les directives d' critical avec des noms, l'axe x et l'axe ydifférents.
#pragma omp parallel shared(x, y) private(x_next, y_next)
{
#pragma omp critical ( xaxis )
x_next = dequeue(x);
work(x_next);
#pragma omp critical ( yaxis )
y_next = dequeue(y);
work(y_next);
}