Ciao a tutti!
Non riesco a risolvere questo problema. Il codice sorgente è il seguente:
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: ");
}
}
....
....
}
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).