X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=ms-queue%2Ftestcase3.c;h=cd2bf44a4207beacc6fa1e6d98feffb38223c568;hb=ce26a518f60749f4fa7bf0ee03f5c6929aed9533;hp=f6243f999abf5e807e545130132ad21445c1aa71;hpb=e4f5d19cd0d94393277381f8aab95126f201fb26;p=model-checker-benchmarks.git diff --git a/ms-queue/testcase3.c b/ms-queue/testcase3.c index f6243f9..cd2bf44 100644 --- a/ms-queue/testcase3.c +++ b/ms-queue/testcase3.c @@ -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) {