The CDSSpec checker's benchmarks
[model-checker-benchmarks.git] / concurrent-hashmap / main.cc
1 #include <threads.h>
2 #include "hashmap.h"
3
4 HashMap *table;
5
6 /** Making w4 & w11 seq_cst */
7
8 int k1 = 1;
9 int k2 = 3;
10 int v1 = 10;
11 int v2 = 30;
12
13 void threadA(void *arg) {
14         int r1 = put(table, k1, v1);
15         int r2 = get(table, k2);
16 }
17
18 void threadB(void *arg) {
19         int r3 = put(table, k2, v2);
20         int r4 = get(table, k1);
21 }
22
23 int user_main(int argc, char *argv[]) {
24         
25         thrd_t t1, t2;
26         /** @Entry */
27         table = new HashMap;
28
29         thrd_create(&t1, threadA, NULL);
30         thrd_create(&t2, threadB, NULL);
31         thrd_join(t1);
32         thrd_join(t2);
33         
34         return 0;
35 }
36
37