1 #include <stdio.h> 2 #include <omp.h> 3 4 extern void abort (void); 5 6 void 7 parallel (int a, int b) 8 { 9 int bad, LASTPRIV, LASTPRIV_SEC; 10 int i; 11 12 a = b = 3; 13 14 bad = 0; 15 16 #pragma omp parallel firstprivate (a,b) shared (bad) num_threads (5) 17 { 18 if (a != 3 || b != 3) 19 bad = 1; 20 21 #pragma omp for lastprivate (LASTPRIV) 22 for (i = 0; i < 10; i++) 23 LASTPRIV = i; 24 25 #pragma omp sections lastprivate (LASTPRIV_SEC) 26 { 27 #pragma omp section 28 { LASTPRIV_SEC = 3; } 29 30 #pragma omp section 31 { LASTPRIV_SEC = 42; } 32 } 33 34 } 35 36 if (LASTPRIV != 9) 37 abort (); 38 39 if (LASTPRIV_SEC != 42) 40 abort (); 41 42 if (bad) 43 abort (); 44 } 45 46 int main() 47 { 48 parallel (1, 2); 49 return 0; 50 } 51