Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Sblocco thread in C

  1. #1

    Sblocco thread in C

    Ciao a tutti,
    ho questo problema che riguarda i thread in C.
    Un thread si blocca in lettura sulla seriale (aspetta dati che
    non arriveranno mai) e io vorrei "sbloccarlo" tramite thread esterni senza eliminarlo e poi ricrearlo. Esistono delle funzioni per questo?

    Grazie1000 e
    It's just another bombtrack...
    Ogni can mena la coa, ogni coion vö gi' la soa!

  2. #2
    :master: in "C" i thread non esistono, parliamo di quale sistema operativo?

    Ciao++

  3. #3
    Sorry x la sbadataggine...parliamo di Linux
    It's just another bombtrack...
    Ogni can mena la coa, ogni coion vö gi' la soa!

  4. #4
    pthread_cancel dovrebbe essere l'API che ti serve, prima però devi crearti una condizione ed un mutex nel thread principale, come variabili globali ovviamente.

    Lo schema + o - sarebbe
    codice:
    /*var globali*/
    dichiara mutex;
    dichiara condition variable;
    
    void thread_func(void*)
    
    int main(..
    
    inizializza mutex;
    inizializza condition variable;
    x=0;
    pthread_t thread = lancia il thread thread_func
    
    imposta un timer su un intervallo di X secondi
    
    blocca il mutex
    aspetta la condizione con timer (p_thread_cond_timewait)
    
    sblocca il mutex
    
    se p_thread_cond_timewait restituisce errore cancella il thread
    
    
    fai il join del thread.
    ...
    
    
    
    void thread_func(...
    
    {
        cerca di leggere
    
        se ci riesce broadcast_condition
    
       continua
    }
    I nomi delle funzioni e la loro sintassi è sul man, è più o meno un anno che non scrivo codice su Linux per cui potrei cannare.

    Buon saturday night

  5. #5
    DImenticavo, sei sicuro che le funzioni di lettura non ti diano la possibilità di impostare come non blocking la lettura?

    prova a vedere ioctl o cose del genere.

    Ri-Ciao++

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 © 2025 vBulletin Solutions, Inc. All rights reserved.