Hilos y Señales
Las señales son compartidas por todos los hilos de un proceso. Si un
hilo modifica la acción asociada a una señal, todos los
hilos se ven afectados. Peor aún, las señales son enviadas a un único
hilo en el proceso. No sirve que una hebra espere por una señal, pues
puede ser enviada a otra. Si la señal está relacionada a una falla de
hardware, la señal es usualmente enviada al hilo que causó la
situación,
pero en otros casos la señal es enviada a un hilo arbitrario.
Un hilo puede bloquear señales usando pthread_sigmask(...).
Un hilo también puede esperar por la ocurrencia de una o más señales
llamando:
#include <signal.h>
int sigwait(const sigset_t * restrict set, int * restrict signop).
set especifica el conjunto de señales por las cuales se espera. Cuando
se retorna signop apunta a un entero indicando la señal que despertó la
hebra.
Usted puede revisar el ejemplo LeakyBucket
donde se usan las funciones señaladas arriba en conjunto con hebras.
Para prender más sobre señales en programación multihebras, revise aquí.