pthread sonno linux

Sto creando un programma con più thread utilizzando pthreads.

È sleep() causando il processo (tutti i thread) per interrompere l’esecuzione o solo il thread dove sto chiamando sleep?

InformationsquelleAutor Steveng | 2010-09-03

 

4 Replies
  1. 34

    Solo il filo. Il POSIX documentazione per sleep() dice:

    Il sleep() funzione determina la chiamata thread la sospensione dell’esecuzione…

    uso: sleep(10) per 10 secondi il sonno.

    • Ecco cosa “man 3, del sonno”, dice: “sleep() rende il processo di chiamata dormire fino a pochi secondi secondi…” (Ubuntu 10). La funzione è in unistd.h. È questa la documentazione errata o c’è una seconda funzione di sonno?
    • Per ragioni storiche, l’uomo pagine spesso uso di “processo” in cui il comportamento si applica ora per il “filo” – questo è il caso in sleep(3) uomo pagina a cui fai riferimento. Suggerisco di inviare un bug di Ubuntu sulla documentazione.
  2. 7

    Provare questo,

    #include <unistd.h>
    
    usleep(microseconds);
    • Sì, che è più facile da usare rispetto nanosleep nella maggior parte dei casi.
    • Nota che usleep() è obsoleto ed è stato rimosso da POSIX.1-2008. Si dovrebbe utilizzare uno sleep(), o nanosleep (), se superiore, è richiesta una risoluzione.
  3. 5

    Io di solito uso nanosleep e funziona benissimo.
    Nanosleep supends l’esecuzione del thread chiamante. Ho avuto lo stesso dubbio, perché in alcune pagine di man sonno si riferisce all’intero processo.

  4. -2

    sleep() funzione non cessa un thread specifico, ma non si arresta tutto il processo per il periodo di tempo specificato. Per fermare l’esecuzione di un thread particolare, possiamo utilizzare uno pthread condizione di oggetto e utilizzare pthread_cond_timedwait() funzione per rendere il thread di attendere per un periodo di tempo specifico. Ogni thread avrà la propria condizione di oggetto e non potrà mai ricevere un segnale da un altro thread.

Lascia un commento