Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gibt an, dass Code nur auf einem Thread ausgeführt wird, einmal auf.
#pragma omp critical [(name)]
{
code_block
}
Hinweise
Hierbei ist:
- (name) (optional)
Ein Name, der im kritischen Code zu identifizieren.Beachten Sie, dass der Name in Klammern eingeschlossen werden muss.
Hinweise
Die Kritisch-Direktiven unterstützen keine OpenMP-Klauseln.
Weitere Informationen finden Sie unter 2.6.2 wichtiges Konstrukt.
Beispiel
// 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);
}