2010-09-03 33 views
19

Estoy creando un programa con varios subprocesos usando pthreads.pthread sleep linux

¿sleep() hace que el proceso (todos los hilos) para de ejecutar o solo el hilo al que estoy llamando sleep?

Respuesta

28

Solo el hilo. El POSIX documentation for sleep() dice:

La función sleep() hará que el hilo llamando a ser suspendido de la ejecución ...

uso

: sleep(10) durante 10 segundos sueño.

+3

Esto es lo que "el hombre del sueño 3" dice: "sleep() hace que el proceso de llamada del sueño hasta que hayan transcurrido segundos segundos ..." (Ubuntu 10). La función está en unistd.h. ¿Es incorrecta esta documentación o hay una segunda función de suspensión? – user48956

+8

@ user48956: Por razones históricas, las páginas man a menudo usan "proceso" donde el comportamiento ahora se aplica al "hilo" - este es el caso en la página man 'sleep (3)' a la que se refiere. Sugiero enviar un error a Ubuntu sobre la documentación. – caf

4

Normalmente uso nanosleep y funciona bien. Nanosleep supera la ejecución del hilo de llamada. He tenido la misma duda porque en algunas páginas man sleep se refiere a todo el proceso.

6

Prueba de esto,

#include <unistd.h> 

usleep(microseconds); 
+0

Sí, eso es más fácil de usar que 'nanosleep' en la mayoría de los casos. –