spin in sem_[timed]wait before performing futex wait
authorRich Felker <dalias@aerifal.cx>
Mon, 25 Aug 2014 20:38:25 +0000 (16:38 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 25 Aug 2014 20:38:25 +0000 (16:38 -0400)
commit2ff714c6138da8abb50fd532503fd8d68a18811a
treed962f59e257148b70dbfd60284738e004d5b0d02
parent8b3d7d0d35f97051bc994800c928a7db53316dd2
spin in sem_[timed]wait before performing futex wait

empirically, this increases the maximum rate of wait/post operations
between two threads by 20-150 times on machines I tested, including
x86 and arm. conceptually, it makes sense to do some spinning because
semaphores are intended to be usable as a notification mechanism
between threads, not just as locks, and low-latency notification is a
valuable property to have.
src/thread/sem_timedwait.c