pthread_mutex_t t1= PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t t2 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_t t3 = PTHREAD_MUTEX_INITIALIZER;
pthread_mutex_lock(&t2) ;
pthread_mutex_lock(&t3) ;
// printNumber(x) outputs "x", where x is an integer.
void zero(function<void(int)> printNumber) {
flag ? pthread_mutex_unlock(&t2) : pthread_mutex_unlock(&t3);
void even(function<void(int)> printNumber) {
pthread_mutex_unlock(&t1);
void odd(function<void(int)> printNumber) {
pthread_mutex_unlock(&t1);