Ciao a tutti!
Non riesco a risolvere questo problema. Il codice sorgente è il seguente:
Il problema è che la pthread_cond_timedwait mi ritorna sempre e subito 1 e non si mette mai in attesa per i secondi che gli ho indicato. Andando a leggere errno mi ritorna "Bad file descriptor". Non capisco quale dei tre parametri ha problemi (anche se i miei sospetti vanno sulla struct timespec forse non inizializzata a dovere).codice:void func() { int condTW; struct timespec ts; pthread_mutex_t tlock; pthread_cond_t tready; ... if(pthread_mutex_init(&tlock, NULL) != 0) PrintError("tlock pthread_mutex_init() error: "); if(pthread_cond_init(&tready, NULL) != 0) PrintError("tready pthread_cond_init() error: "); ... ... while(!ReReadCfg){ if(clock_gettime(CLOCK_REALTIME,&ts)==-1) PrintError("clock_gettime() error: "); ts.tv_sec += 3; if(pthread_mutex_lock(&tlock)!=0) PrintError("pthread_mutex_lock() error: "); if(condTW=(pthread_cond_timedwait(&tready,&tlock,&ts))!=0){ if(errno==ETIMEDOUT){ if(pthread_mutex_unlock(&tlock)!=0){ PrintError("pthread_mutex_unlock() error: "); continue; } else PrintError("pthread_cond_wait() error: "); } } .... .... }

Rispondi quotando
