OSDN Git Service

ecf54324523d0150f63ecab51654396546d9ed63
[pf3gnuchains/gcc-fork.git] / libgomp / testsuite / libgomp.c / critical-1.c
1 /* Trivial test of critical sections.  */
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 static volatile int test = -1;
11
12 static void function(void *dummy)
13 {
14   int iam = omp_get_thread_num ();
15   int old;
16
17   GOMP_critical_start ();
18
19   old = __sync_lock_test_and_set (&test, iam);
20   assert (old == -1);
21
22   usleep (10);
23   test = -1;
24
25   GOMP_critical_end ();
26 }
27
28 int main()
29 {
30   omp_set_dynamic (0);
31
32   GOMP_parallel_start (function, NULL, 3);
33   function (NULL);
34   GOMP_parallel_end ();
35
36   return 0;
37 }