export OMP_NUM_THREADS=5
1) Se tolgo il commento da `printf` t.get() restituisce il valore `5`.codice:T t {0};// Inizializzo una classe di nome `t` che contiene un membro inizializzato a 0 #pragma omp parallel { //printf("%d", omp_get_num_threads()); t.inc(); // Incremento il membro di uno } t.get(); // Stampa il valore interno di t
2) Se commento `printf` t.get() restituisce un valore arbitrario fra 3 e 5.
3) Se aggiungo `#pragma omp atomic` nel membro t.get() prima di incrementare non ho problemi e stampa sempre 5.
Come mai?

Rispondi quotando