X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=dekker-fences%2Fdekker-fences.cc;h=eb38d5cc25cde22870e1597dc436e3dc21272234;hb=refs%2Ftags%2Foopsla2013;hp=81f609846cd2a8777a707ba12eedec38a9534068;hpb=3a122c7c1a08bff6cbff5b81f357c5c6efaad84d;p=model-checker-benchmarks.git diff --git a/dekker-fences/dekker-fences.cc b/dekker-fences/dekker-fences.cc index 81f6098..eb38d5c 100644 --- 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) { + thrd_yield(); } 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); @@ -54,10 +56,12 @@ void p1(void *arg) 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); - } + } else + thrd_yield(); } std::atomic_thread_fence(std::memory_order_acquire);