Meanwhile, On The Signaling Side... To signal a condition variable, we use 'pthread_cond_signal' (to wake a single waiting thread), or 'pthread_cond_broadcast' (to signal all threads that might be waiting on this condition variable): /* lock the mutex */ if (pthread_mutex_lock(&mutex) != 0) { /* handle error... */ } /* perform the operation on which we wish */ /* to notify the other thread... */ ... /* signal the condition variable. */ if (pthread_cond_signal(&cond) != 0) { perror("help help help! pthread_cond_signal failed:"); exit(1); } /* finally, unlock the mutex. */ if (pthread_mutex_unlock(&mutex) != 0) { /* handle error... */ }