Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160

    [C] Problema con pthread_cond_timedwait

    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).

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2006
    Messaggi
    160
    Analizzando il codice mi sono accorto che effettivamente aspetta tot secondi prima di tornare, però errno non viene settato a ETIMEDOUT (ecco perché errno mi ritorna Bad file descriptor = EBADF, che non ha senso con questo tipo di system call).

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.