Pregunta Dormir un hilo por tiempo indefinido en Linux


Quiero hacer que un hilo duerma por un tiempo indefinido. La razón por la que quiero hacer esto es porque mi programa solo actúa cuando recibe una señal y no tiene nada que hacer en el hilo primario. Por lo tanto, todo el procesamiento se realiza dentro del controlador de señal. ¿Cómo puedo dormir por un tiempo indefinido?


5
2017-09-01 13:47


origen


Respuestas:


Creo que estás buscando el pause función:

http://pubs.opengroup.org/onlinepubs/9699919799/functions/pause.html

Podrías hacer algo como: for (;;) pause();


12
2017-09-01 14:33



Si solo estás haciendo algo en otro hilo, simplemente llama pthread_join en ese hilo y prácticamente bloqueará "para siempre". Puede lograr el mismo efecto usando una variable de condición.


8
2017-09-01 13:49



¡Usa semáforos!

Haga que su hilo se bloquee en un semáforo usando sem_wait. Una vez que necesites despertar la señal de tu hilo, el semáforo usa sem_post de otro hilo.


4
2017-09-01 13:49



POSIX proporciona el sigsuspend función para esperar una señal. (Como se menciona en otra respuesta, pause funciona también.)


1
2017-09-02 11:04