Condition Variables
Waiting on a condition variable: int pthread_cond_wait( pthread_cond_t *cond, pthread_mutex_t *mutex );
A timed wait for a condition variable: int pthread_cond_timedwait( pthread_cond_t *cond pthread_mutex_t *mutex, struct timespec *expiration );