Вперед: 3.2.9. Директива ORDERED
Назад: 3.2.7. Последовательное выполнение кода, директива CRITICAL
К содержанию: Оглавление


3.2.8. Директива ATOMIC

Директива ATOMIC действует аналогично директиве CRITICAL, но относится только к идущему непосредственно за ней атомарному оператору, гарантируя корректную работу с общей переменной, стоящей в левой части оператора присваивания.

C/C++:

#pragma omp atomic

Fortran:

!$OMP ATOMIC

Пример программы:

Программа atomic.c

 #include <stdio.h>
 #include <omp.h>
 #define MAX 8

int main() {
  int count = 0;
  #pragma omp parallel num_threads(MAX)
  {
  #pragma omp atomic 
   count++;
  }
  printf("Number of threads: %d\n", count);
}


Вперед: 3.2.9. Директива ORDERED
Назад: 3.2.7. Последовательное выполнение кода, директива CRITICAL
К содержанию: Оглавление