Estoy empezando a trabajar con programación paralela pero necesitaría aclarar unos conceptos que, después d buscar por internet, no me quedan claros del todo.
La sentencia #pragma omp parallel lo que hace es crear tantos threads como tu definas, ¿cierto?
Entonces si dentro de esa sentencia pongo por ejemplo:
Código:
#pragma omp parallel shared(valor) //previamente definido a 0
{
id_thread = omp_get_thread_num();
leido = valor;
valor += 10;
escrito = valor;
printf("thread %d, lee valor %d y escribe valor %d", id_thread, leido, escrito);
}
Ahora bien, modifico lo siguiente en el programa:
Código:
#pragma omp parallel shared(valor) //previamente definido a 0
{
id_thread = omp_get_thread_num();
#pragma omp barrier
leido = valor;
valor += 10;
escrito = valor;
printf("thread %d, lee valor %d y escribe valor %d", id_thread, leido, escrito);
}
Espero haberme explicado. Un saludo y muchas gracias!