1 /* Trivial test of barrier. */ 2 3 #include <omp.h> 4 #include <sys/time.h> 5 #include <unistd.h> 6 #include <assert.h> 7 #include "libgomp_g.h" 8 9 10 struct timeval stamps[3][3]; 11 12 static void function(void *dummy) 13 { 14 int iam = omp_get_thread_num (); 15 16 gettimeofday (&stamps[iam][0], NULL); 17 if (iam == 0) 18 usleep (10); 19 20 GOMP_barrier (); 21 22 if (iam == 0) 23 { 24 gettimeofday (&stamps[0][1], NULL); 25 usleep (10); 26 } 27 28 GOMP_barrier (); 29 30 gettimeofday (&stamps[iam][2], NULL); 31 } 32 33 int main() 34 { 35 omp_set_dynamic (0); 36 37 GOMP_parallel_start (function, NULL, 3); 38 function (NULL); 39 GOMP_parallel_end (); 40 41 assert (!timercmp (&stamps[0][0], &stamps[0][1], >)); 42 assert (!timercmp (&stamps[1][0], &stamps[0][1], >)); 43 assert (!timercmp (&stamps[2][0], &stamps[0][1], >)); 44 45 assert (!timercmp (&stamps[0][1], &stamps[0][2], >)); 46 assert (!timercmp (&stamps[0][1], &stamps[1][2], >)); 47 assert (!timercmp (&stamps[0][1], &stamps[2][2], >)); 48 49 return 0; 50 } 51