Wake every waiter
After shared state makes a condition true, call cnd_broadcast(&condition); every thread waiting on that condition variable wakes and returns from cnd_wait or cnd_timedwait. Each waiter must reacquire the mutex and check its condition again. section 18.5
TAKEAWAY: cnd_broadcast wakes all threads waiting for the corresponding condition variable; it does not establish that every thread's predicate is now satisfied. section 18.5
Use the operation with these rules:
- Pair waiting with a mutex held by the calling thread; waiting temporarily releases it and reacquires it before returning. section 18.5
- Keep each wait inside a loop that tests the condition, because a wait can return early. section 18.5

