Partager via


vide (OpenMP)

Spécifie que tous les threads ont le même point de vue de la mémoire pour tous les objets partagés.

#pragma omp flush [(var)]

Notes

où,

  • var (facultatif)
    Une liste avec la virgule comme séparateur des variables qui représentent des objets vous souhaitez synchroniser.Si var n'est pas spécifié, toute la mémoire doit être vidée.

Notes

La directive de vide ne prend en charge aucune clauses OpenMP.

Pour plus d'informations, consultez directive 2.6.5 affleurante.

Exemple

// omp_flush.cpp
// compile with: /openmp 
#include <stdio.h>
#include <omp.h>

void read(int *data) {
   printf_s("read data\n");
   *data = 1;
}

void process(int *data) {
   printf_s("process data\n");
   (*data)++;
}

int main() {
   int data;
   int flag;

   flag = 0;

   #pragma omp parallel sections num_threads(2)
   {
      #pragma omp section
      {
         printf_s("Thread %d: ", omp_get_thread_num( ));
         read(&data);
         #pragma omp flush(data)
         flag = 1;
         #pragma omp flush(flag)
         // Do more work.
      }

      #pragma omp section 
      {
         while (!flag) {
            #pragma omp flush(flag)
         }
         #pragma omp flush(data)
       
         printf_s("Thread %d: ", omp_get_thread_num( ));
         process(&data);
         printf_s("data = %d\n", data);
      }
   }
}
  

Voir aussi

Référence

Directives et OpenMP