Too many inits/destroys? Looking at the following simple code (ch15/cv_simple.c) will clarify their usage; we write a small program to demonstrate the usage of a condition variable and its associated mutex lock. Here, we create two threads, A and B. We then have thread B perform some work and thread A synchronize upon completion of that work by using the {CV, mutex} pair:
...#define LOCK_MTX(mtx) do { \ int ret=0; \ if ((ret = pthread_mutex_lock(mtx))) \ FATAL("pthread_mutex_lock ...