refrain from spinning on locks when there is already a waiter
authorRich Felker <dalias@aerifal.cx>
Tue, 26 Aug 2014 00:24:07 +0000 (20:24 -0400)
committerRich Felker <dalias@aerifal.cx>
Tue, 26 Aug 2014 00:24:07 +0000 (20:24 -0400)
commitf5fb20b0e934770c37093105524ea644dcaba5e2
treedcf0555f52553e2ef67b6aef1d8de05b5c89bd8a
parent97a7512b6819014d15c679c8998caa0006d13c29
refrain from spinning on locks when there is already a waiter

if there is already a waiter for a lock, spinning on the lock is
essentially an attempt to steal it from whichever waiter would obtain
it via any priority rules in place, and is therefore undesirable. in
the current implementation, there is always an inherent race window at
unlock during which a newly-arriving thread may steal the lock from
the existing waiters, but we should aim to keep this window minimal
rather than enlarging it.
src/thread/__wait.c
src/thread/pthread_mutex_timedlock.c
src/thread/pthread_rwlock_timedrdlock.c
src/thread/pthread_rwlock_timedwrlock.c
src/thread/sem_timedwait.c