include stdio include omp omp_lock_t my_lock создаём блокировку int ma

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>
#include <omp.h>
omp_lock_t my_lock; // создаём блокировку
int main()
{
omp_init_lock(&my_lock); // инициализируем
int max_threads = omp_get_max_threads(); // определяем максимальное количество потоков
printf("Максимальное количество потоков: %d\n", max_threads);
// проверяем количество возможных потоков
if (max_threads < 4)
omp_set_num_threads(max_threads); // если количество меньше 4, то устанавливаем то число потоков, которое возможно
else
omp_set_num_threads(4);
#pragma omp parallel
{
omp_set_lock(&my_lock);
int count = omp_get_thread_num();
int itsme = omp_get_num_threads();
printf("Hello, OpenMP! I am %d of %d\n", count, itsme);
omp_unset_lock(&my_lock);
}
omp_destroy_lock(&my_lock); // уничтожаем блокировку
return 0;
}