Meanwhile, On The Signaling Side (Cont.) Or using 'broadcast': ... if (pthread_cond_broadcast(&cond) != 0) { perror("Hum hurm... pthread_cond_broadcast failed:"); exit(1); } ... Note: when using "pthread_cond_broadcast", not all waiting threads will run at once, since they all race to re-lock the mutex. One will lock the mutex, while the rest will now block on the mutex (still in the "pthread_cond_wait" function).