Зачем нам нужна проверка условий перед pthread_cond_wait

Я пытаюсь изучить основы pthread_cond_wait. Во всех случаях я вижу

if(cond is false)
   pthread_cond_wait

или же

while(cond is false)
   pthread_cond_wait

Мой вопрос, мы хотим cond_wait только потому, что условие ложно. Тогда почему я должен взять на себя явную необходимость поставить цикл if / while. Я могу понять это без каких-либо проверок if / whilecond_wait мы прямо поразим это, и оно вообще не вернется. Является ли проверка состояния исключительно для решения этой задачи или имеет какое-либо иное значение. Если это для решения ненужного условия подождать, то проверка состояния и избежание cond_wait похоже на опрос ?? Я использую cond_wait, как это.

void* proc_add(void *name){
    struct vars *my_data = (struct vars*)name;
    printf("In thread Addition and my id = %d\n",pthread_self());
    while(1){
    pthread_mutex_lock(&mutexattr);
    while(!my_data->ipt){  // If no input get in
            pthread_cond_wait(&mutexaddr_add,&mutexattr);  // Wait till signalled
            my_data->opt = my_data->a + my_data->b;
            my_data->ipt=1;
            pthread_cond_signal(&mutexaddr_opt);
    }
    pthread_mutex_unlock(&mutexattr);
    if(my_data->end)
            pthread_exit((void *)0);
    }
}

Логика заключается в том, что я прошу поток ввода обрабатывать данные всякий раз, когда вход доступен, и сигнализировать потоку вывода о его печати.

Ответы на вопрос(2)

Ваш ответ на вопрос