Referring to pthread_cond_wait functionality is false that:
pthread_cond_wait
Its execution releases the lock.
The thread that calls this function continues its execution.
The thread that runs the code blocks itself.
It is used to avoid recheckings.
Referring to pthread_cond_signal functionality is false that:
pthread_cond_signal
Its invocation means it can continue another thread blocked on a wait statement
The thread that invokes this statement, it is blocked
It is a massive signal equivalent as there is a single thread awaiting
If there are multiple threads blocked, one does not know which one will wakes