00001 #include <omp.h> 00002 #include <stdlib.h> 00003 00004 int 00005 main (void) 00006 { 00007 int l = 0; 00008 omp_nest_lock_t lock; 00009 omp_init_nest_lock (&lock); 00010 #pragma omp parallel reduction (+:l) num_threads (1) 00011 { 00012 if (omp_test_nest_lock (&lock) != 1) 00013 l++; 00014 if (omp_test_nest_lock (&lock) != 2) 00015 l++; 00016 #pragma omp task if (0) shared (lock, l) 00017 { 00018 if (omp_test_nest_lock (&lock) != 0) 00019 l++; 00020 } 00021 #pragma omp taskwait 00022 if (omp_test_nest_lock (&lock) != 3) 00023 l++; 00024 omp_unset_nest_lock (&lock); 00025 omp_unset_nest_lock (&lock); 00026 omp_unset_nest_lock (&lock); 00027 } 00028 if (l) 00029 abort (); 00030 omp_destroy_nest_lock (&lock); 00031 return 0; 00032 }