cond_wait var
Takes the locked variable var, unlocks it, and blocks until another
thread does a cond_signal
or
cond_broadcast
for that variable. The variable is
relocked after the cond_wait
has been satisfied. If multiple
threads are cond_wait
ing, all but one will reblock waiting to
reacquire the lock.