further simplify and optimize new cond var
authorRich Felker <dalias@aerifal.cx>
Mon, 18 Aug 2014 18:36:56 +0000 (14:36 -0400)
committerRich Felker <dalias@aerifal.cx>
Mon, 18 Aug 2014 18:36:56 +0000 (14:36 -0400)
commit4992ace94232a116bdca25481ccc3d6841b83432
treec3a6d861634c2b85ef87d93ec523220261ca7e79
parent2c4b510bae1b2841e6983a5639dd600255898442
further simplify and optimize new cond var

the main idea of the changes made is to have waiters wait directly on
the "barrier" lock that was used to prevent them from making forward
progress too early rather than first waiting on the atomic state value
and then attempting to lock the barrier.

in addition, adjustments to the mutex waiter count are optimized.
previously, each waking waiter decremented the count (unless it was
the first) then immediately incremented it again for the next waiter
(unless it was the last). this was a roundabout was of achieving the
equivalent of incrementing it once for the first waiter and
decrementing it once for the last.
src/thread/pthread_cond_timedwait.c