A lost wake-up occurs when all of the following conditions are in effect:
A thread calls pthread_cond_signal() or pthread_cond_broadcast()
No threads are waiting
The signal has no effect, and therefore is lost
This can occur only if the condition being tested is modified without holding the mutex lock associated with the condition. As long as the condition being tested is modified only while holding the associated mutex, pthread_cond_signal() and pthread_cond_broadcast() can be called regardless of whether they are holding the associated mutex.