changes with lines of spec counted
[cdsspec-compiler.git] / benchmark / read-copy-update / rcu.cc
index e0edc4e0a1cdc4ffbbc83c6099ce6c0c57cbb169..55238821356416a592399795ebc4d98a0ae6fabd 100644 (file)
@@ -80,14 +80,14 @@ Data* read() {
 Data* write(int d1, int d2, int d3) {
        bool succ = false;
        Data *tmp = (Data*) malloc(sizeof(Data));
+       Data *prev = data.load(memory_order_acquire);
        do {
-               Data *prev = data.load(memory_order_acquire);
         //store_32(&tmp->data1, prev->data1 + d1);
         tmp->data1 = prev->data1 + d1;
            tmp->data2 = prev->data2 + d2;
            tmp->data3 = prev->data3 + d3;
         succ = data.compare_exchange_strong(prev, tmp,
-            memory_order_acq_rel, memory_order_relaxed);
+            memory_order_release, memory_order_acquire);
                /**
                        @Begin
                        @Commit_point_define_check: succ
@@ -133,13 +133,13 @@ int user_main(int argc, char **argv) {
 
        thrd_create(&t1, threadA, NULL);
        thrd_create(&t2, threadB, NULL);
-       thrd_create(&t3, threadC, NULL);
-       thrd_create(&t4, threadD, NULL);
+       //thrd_create(&t3, threadC, NULL);
+       //thrd_create(&t4, threadD, NULL);
 
        thrd_join(t1);
        thrd_join(t2);
-       thrd_join(t3);
-       thrd_join(t4);
+       //thrd_join(t3);
+       //thrd_join(t4);
 
        return 0;
 }