projects
/
model-checker-benchmarks.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
bench.sh: only print git information when we're in git
[model-checker-benchmarks.git]
/
dekker-fences
/
dekker-fences.cc
diff --git
a/dekker-fences/dekker-fences.cc
b/dekker-fences/dekker-fences.cc
index 81f609846cd2a8777a707ba12eedec38a9534068..eb38d5cc25cde22870e1597dc436e3dc21272234 100644
(file)
--- a/
dekker-fences/dekker-fences.cc
+++ b/
dekker-fences/dekker-fences.cc
@@
-27,10
+27,12
@@
void p0(void *arg)
flag0.store(false,std::memory_order_relaxed);
while (turn.load(std::memory_order_relaxed) != 0)
{
flag0.store(false,std::memory_order_relaxed);
while (turn.load(std::memory_order_relaxed) != 0)
{
+ thrd_yield();
}
flag0.store(true,std::memory_order_relaxed);
std::atomic_thread_fence(std::memory_order_seq_cst);
}
flag0.store(true,std::memory_order_relaxed);
std::atomic_thread_fence(std::memory_order_seq_cst);
- }
+ } else
+ thrd_yield();
}
std::atomic_thread_fence(std::memory_order_acquire);
}
std::atomic_thread_fence(std::memory_order_acquire);
@@
-54,10
+56,12
@@
void p1(void *arg)
flag1.store(false,std::memory_order_relaxed);
while (turn.load(std::memory_order_relaxed) != 1)
{
flag1.store(false,std::memory_order_relaxed);
while (turn.load(std::memory_order_relaxed) != 1)
{
+ thrd_yield();
}
flag1.store(true,std::memory_order_relaxed);
std::atomic_thread_fence(std::memory_order_seq_cst);
}
flag1.store(true,std::memory_order_relaxed);
std::atomic_thread_fence(std::memory_order_seq_cst);
- }
+ } else
+ thrd_yield();
}
std::atomic_thread_fence(std::memory_order_acquire);
}
std::atomic_thread_fence(std::memory_order_acquire);