ms-queue result
[model-checker-benchmarks.git] / ms-queue / testcase3.c
index f6243f999abf5e807e545130132ad21445c1aa71..cd2bf44a4207beacc6fa1e6d98feffb38223c568 100644 (file)
@@ -25,28 +25,36 @@ int get_thread_num()
 bool succ1, succ2;
 atomic_int x[3];
 int idx1, idx2;
+unsigned int reclaimNode1, reclaimNode2;
 
-static int procs = 4;
+static int procs = 2;
 static void main_task(void *param)
 {
        unsigned int val;
        int pid = *((int *)param);
        if (pid % 4 == 0) {
-               atomic_store_explicit(&x[0], 1, memory_order_relaxed);
-               enqueue(queue, 0);
+               //atomic_store_explicit(&x[0], 1, memory_order_relaxed);
+               enqueue(queue, 0, true);
        
-               succ1 = dequeue(queue, &idx1);
+       
+       } else if (pid % 4 == 1) {
+               //atomic_store_explicit(&x[1], 1, memory_order_relaxed);
+               enqueue(queue, 1, false);
+               enqueue(queue, 1, false);
+
+               succ1 = dequeue(queue, &idx1, &reclaimNode1);
                if (succ1) {
-                       atomic_load_explicit(&x[idx1], memory_order_relaxed);
+                       //atomic_load_explicit(&x[idx1], memory_order_relaxed);
                }
-       } else if (pid % 4 == 1) {
-               atomic_store_explicit(&x[1], 1, memory_order_relaxed);
-               enqueue(queue, 1);
 
-               succ2 = dequeue(queue, &idx2);
+               succ2 = dequeue(queue, &idx2, &reclaimNode2);
                if (succ2) {
-                       atomic_load_explicit(&x[idx2], memory_order_relaxed);
+                       //atomic_load_explicit(&x[idx2], memory_order_relaxed);
                }
+               simulateRecycledNodeUpdate(queue, reclaimNode1);
+               
+
+
        } else if (pid % 4 == 2) {
 
        } else if (pid % 4 == 3) {