raw elimination-backoff code from paper
[model-checker-benchmarks.git] / barrier / barrier.cc
1 #include <stdio.h>
2 #include <threads.h>
3
4 #include "barrier.h"
5
6 #include "librace.h"
7
8 spinning_barrier *barr;
9 int var = 0;
10
11 void threadA(void *arg)
12 {
13         store_32(&var, 1);
14         barr->wait();
15 }
16
17 void threadB(void *arg)
18 {
19         barr->wait();
20         printf("var = %d\n", load_32(&var));
21 }
22
23 #define NUMREADERS 1
24 int user_main(int argc, char **argv)
25 {
26         thrd_t A, B[NUMREADERS];
27         int i;
28
29         barr = new spinning_barrier(NUMREADERS + 1);
30
31         thrd_create(&A, &threadA, NULL);
32         for (i = 0; i < NUMREADERS; i++)
33                 thrd_create(&B[i], &threadB, NULL);
34
35         for (i = 0; i < NUMREADERS; i++)
36                 thrd_join(B[i]);
37         thrd_join(A);
38
39         return 0;
40 }