1 #include <omp.h> 2 3 extern "C" void abort (void); 4 5 int 6 foo (void) 7 { 8 return 10; 9 } 10 11 main () 12 { 13 int A = 0; 14 15 #pragma omp parallel if (foo () > 10) shared (A) 16 { 17 A = omp_get_num_threads (); 18 } 19 20 if (A != 1) 21 abort (); 22 23 #pragma omp parallel if (foo () == 10) num_threads (3) shared (A) 24 { 25 A = omp_get_num_threads (); 26 } 27 28 if (A != 3) 29 abort (); 30 31 #pragma omp parallel if (foo () == 10) num_threads (foo ()) shared (A) 32 { 33 A = omp_get_num_threads (); 34 } 35 36 if (A != 10) 37 abort (); 38 39 return 0; 40 } 41