Compartir a través de


crítico

Especifica que es el código se ejecuta sólo en un subproceso cada vez.

#pragma omp critical [(name)]
{
   code_block
}

Comentarios

donde

  • (name) (opcional)
    un nombre para identificar el código crítico.Observe que el nombre se debe agregar entre paréntesis.

Comentarios

la directiva de Crtico no admite ninguna cláusula de OpenMP.

Para obtener más información, vea Construcción crítica 2.6.2.

Ejemplo

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

#define SIZE 10

int main() 
{
    int i;
    int max;
    int a[SIZE];

    for (i = 0; i < SIZE; i++) 
    {
        a[i] = rand();
        printf_s("%d\n", a[i]);
    }

    max = a[0];
    #pragma omp parallel for num_threads(4)
        for (i = 1; i < SIZE; i++) 
        {
            if (a[i] > max)
            {
                #pragma omp critical
                {
                    // compare a[i] and max again because max 
                    // could have been changed by another thread after 
                    // the comparison outside the critical section
                    if (a[i] > max)
                        max = a[i];
                }
            }
        }
   
    printf_s("max = %d\n", max);
}
  

Vea también

Referencia

Directivas de OpenMP