Как использовать переменную условия

В книге Linux Programming Interface есть фрагмент кода (производитель / потребитель), показывающий, как работает условная переменная:

static pthread_mutex_t mtx = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t cond = PTHREAD_COND_INITIALIZER;

static int avail = 0;

while (TRUE) {
    s = pthread_mutex_lock(&mtx);

    while (avail == 0) {   /* Wait for something to consume */
       s = pthread_cond_wait(&cond, &mtx);
    }

    while (avail > 0) {   /* Consume all available units */ 
        avail--;
    }

    s = pthread_mutex_unlock(&mtx);
}

Почему мы используем pthread_mutex_lock в , в то время как ? почему мы не используем его в if ?

10
задан Majid Azimi 1 June 2011 в 19:05
поделиться