// wait on predecessor setting my flag -
rl::linear_backoff bo;
while ( me->gate.load(std::mo_acquire) ) {
- bo.yield();
+ thrd_yield();
}
}
}
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;
}
next = me->next.load(std::mo_acquire);
if ( next != NULL )
break;
- bo.yield();
+ thrd_yield();
}
}