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í.