if (r != EBUSY) return r;
int spins = 100;
- while (spins-- && m->_m_lock) a_spin();
+ while (spins-- && m->_m_lock && !m->_m_waiters) a_spin();
while ((r=pthread_mutex_trylock(m)) == EBUSY) {
if (!(r=m->_m_lock) || ((r&0x40000000) && (m->_m_type&4)))