Зачем нам нужна проверка условий перед 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);
}
}
Логика заключается в том, что я прошу поток ввода обрабатывать данные всякий раз, когда вход доступен, и сигнализировать потоку вывода о его печати.