X-Git-Url: http://plrg.eecs.uci.edu/git/?p=model-checker-benchmarks.git;a=blobdiff_plain;f=mcs-lock%2Fmcs-lock.h;h=4b808f7c3c9b9bbc7effe6b4e6c570f2712e5232;hp=47c2f8f00536e06ace6da9cc668898d836fea29b;hb=993e7e5146f39ff0ed459ac0a8bc30e7a0253156;hpb=18869c55f75a2801099ef5db7b8e2b95dd2e3e7f diff --git a/mcs-lock/mcs-lock.h b/mcs-lock/mcs-lock.h index 47c2f8f..4b808f7 100644 --- a/mcs-lock/mcs-lock.h +++ b/mcs-lock/mcs-lock.h @@ -57,7 +57,7 @@ public: // wait on predecessor setting my flag - rl::linear_backoff bo; while ( me->gate.load(std::mo_acquire) ) { - bo.yield(); + thrd_yield(); } } } @@ -69,7 +69,7 @@ public: if ( next == NULL ) { mcs_node * tail_was_me = me; - if ( m_tail.compare_exchange( tail_was_me,NULL,std::mo_acq_rel) ) { + if ( m_tail.compare_exchange_strong( tail_was_me,NULL,std::mo_acq_rel) ) { // got null in tail, mutex is unlocked return; } @@ -80,7 +80,7 @@ public: next = me->next.load(std::mo_acquire); if ( next != NULL ) break; - bo.yield(); + thrd_yield(); } }