#include #include int main () { #pragma omp parallel #pragma omp single { int x = 1, y = 2; #pragma omp taskgroup { #pragma omp task shared (x) depend(in: x) { usleep (10000); if (x != 1) abort (); } #pragma omp taskgroup { #pragma omp task shared (x) depend(in: x) { usleep (15000); if (x != 1) abort (); } #pragma omp task shared (y) depend(inout: y) { if (y != 2) abort (); y = 3; } #pragma omp taskgroup { #pragma omp task shared (x) depend(in: x) { usleep (13000); if (x != 1) abort (); } #pragma omp taskgroup { #pragma omp task shared (x) depend(out: x) x = 2; } } } } } return 0; }