10. #include <omp.h> int main() { int x = 0; #pragma omp parallel shared(x) { #pragma omp sections nowait { #pragma omp section #pragma omp critical x = x + 1; #pragma omp section #pragma omp critical x = x + 1; } } } Exemplos Sincronização Cada thread executará uma seção. No entando, como são regiões críticas, eles a farão um de cada vez. Observação: a diferença entre atomic e critical é que a atomic tenta usar recursos de hardware para garantir a exclusão mútua.
11.
12. void omp_set_num_threads(int num_threads): determina o número de threads que serão utilizadas para a próxima região paralela;
17. void omp_init_lock(omp_lock_t *lock): inicia para o OpenMP as variáveis de bloqueio, indicando para as threads as variáveis de bloqueio. A variável tem que ser definida com tipo LOCK.