diff options
Diffstat (limited to 'libgomp/testsuite/libgomp.c/barrier-1.c')
-rw-r--r-- | libgomp/testsuite/libgomp.c/barrier-1.c | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/libgomp/testsuite/libgomp.c/barrier-1.c b/libgomp/testsuite/libgomp.c/barrier-1.c new file mode 100644 index 000000000..1f8d1f0d3 --- /dev/null +++ b/libgomp/testsuite/libgomp.c/barrier-1.c @@ -0,0 +1,50 @@ +/* Trivial test of barrier. */ + +#include <omp.h> +#include <sys/time.h> +#include <unistd.h> +#include <assert.h> +#include "libgomp_g.h" + + +struct timeval stamps[3][3]; + +static void function(void *dummy) +{ + int iam = omp_get_thread_num (); + + gettimeofday (&stamps[iam][0], NULL); + if (iam == 0) + usleep (10); + + GOMP_barrier (); + + if (iam == 0) + { + gettimeofday (&stamps[0][1], NULL); + usleep (10); + } + + GOMP_barrier (); + + gettimeofday (&stamps[iam][2], NULL); +} + +int main() +{ + omp_set_dynamic (0); + + GOMP_parallel_start (function, NULL, 3); + function (NULL); + GOMP_parallel_end (); + + assert (!timercmp (&stamps[0][0], &stamps[0][1], >)); + assert (!timercmp (&stamps[1][0], &stamps[0][1], >)); + assert (!timercmp (&stamps[2][0], &stamps[0][1], >)); + + assert (!timercmp (&stamps[0][1], &stamps[0][2], >)); + assert (!timercmp (&stamps[0][1], &stamps[1][2], >)); + assert (!timercmp (&stamps[0][1], &stamps[2][2], >)); + + return 0; +} |