Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'esempio seguente consente di evitare race condition (aggiornamenti simultanee di un elemento di x da più thread) tramite atomic direttiva (parte 2.6.4 nella pagina 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);
}
Il vantaggio di l atomic la direttiva in questo esempio è che consente agli aggiornamenti di due elementi differenti della x si verifichino numerosi in parallelo.se a critical direttiva (parte 2.6.2 nella pagina 18) sono stati utilizzati invece, quindi tutti gli aggiornamenti degli elementi di x eseguire seriale (sebbene non in qualsiasi ordine garantito).
si noti che atomic la direttiva si applica solo all'istruzione di C++ o c# immediatamente dopo.Di conseguenza, gli elementi di y non vengono aggiornati in modalità atomica in questo esempio.