Add data structure benchmarks
[c11concurrency-benchmarks.git] / cdschecker_modified_benchmarks / barrier / barrier.cc
1 #include <stdio.h>
2
3 #include "cds_threads.h"
4
5 #include "barrier.h"
6
7 #include "librace.h"
8
9 spinning_barrier *barr;
10 int var = 0;
11
12 void threadA(void *arg)
13 {
14 //      std::this_thread::sleep_for(std::chrono::milliseconds(10));
15         store_32(&var, 1);
16         barr->wait();
17 }
18
19 void threadB(void *arg)
20 {
21 //      std::this_thread::sleep_for(std::chrono::milliseconds(10));
22         barr->wait();
23         printf("var = %d\n", load_32(&var));
24 }
25
26 #define NUMREADERS 3
27 int user_main(int argc, char **argv)
28 {
29         std::thread A, B[NUMREADERS];
30         int i;
31
32         barr = new spinning_barrier(NUMREADERS + 1);
33
34         A = std::thread(threadA, (void *)NULL);
35         for (i = 0; i < NUMREADERS; i++)
36                 B[i] = std::thread(threadB, (void *)NULL);
37
38         for (i = 0; i < NUMREADERS; i++)
39                 B[i].join();
40         A.join();
41
42         return 0;
43 }