1#include <stdlib.h> 2#include <unistd.h> 3 4int 5main () 6{ 7 #pragma omp parallel 8 #pragma omp single 9 { 10 int x = 1, y = 2; 11 #pragma omp taskgroup 12 { 13 #pragma omp task shared (x) depend(in: x) 14 { 15 usleep (10000); 16 if (x != 1) 17 abort (); 18 } 19 #pragma omp taskgroup 20 { 21 #pragma omp task shared (x) depend(in: x) 22 { 23 usleep (15000); 24 if (x != 1) 25 abort (); 26 } 27 #pragma omp task shared (y) depend(inout: y) 28 { 29 if (y != 2) 30 abort (); 31 y = 3; 32 } 33 #pragma omp taskgroup 34 { 35 #pragma omp task shared (x) depend(in: x) 36 { 37 usleep (13000); 38 if (x != 1) 39 abort (); 40 } 41 #pragma omp taskgroup 42 { 43 #pragma omp task shared (x) depend(out: x) 44 x = 2; 45 } 46 } 47 } 48 } 49 } 50 return 0; 51} 52