Я пытаюсь изучить основы pthread_cond_wait. Во всех применениях я вижу либо
if(cond is false)
pthread_cond_wait
или
while(cond is false)
pthread_cond_wait
Мой вопрос: мы хотим cond_wait только потому, что условие ложно. Тогда почему я должен принять боль от явного ввода цикла if/while. Я могу понять, что без проверки if/while до cond_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);
}
}
Логика заключается в том, что я прошу входной поток обрабатывать данные всякий раз, когда вход доступен, и сигнализировать выходной поток для его печати.