projects
/
model-checker-benchmarks.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
ms-queue result
[model-checker-benchmarks.git]
/
ms-queue
/
testcase3.c
diff --git
a/ms-queue/testcase3.c
b/ms-queue/testcase3.c
index f6243f999abf5e807e545130132ad21445c1aa71..cd2bf44a4207beacc6fa1e6d98feffb38223c568 100644
(file)
--- 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;
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) {
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) {
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) {
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) {
} else if (pid % 4 == 2) {
} else if (pid % 4 == 3) {