Las señales sincronas se mandan siempre al hilo que las ha causado, mientras que las señales asíncronas puede enviarse a cualquiera de los hilos de ejecución, no estando definido a cual de ellos le llegará la señal. Por tanto, esto es un problema que debe de tenerse en cuenta cuando estamos trabajando con una aplicación multihilo.
La mejor estrategia en este caso, es ignorar en todos los hilos las señales, excepto uno, y de esta manera este será el encargado de recibir todas las señales asíncronas que se le manden al proceso. Las máscaras de señales son específicas de cada hilo de ejecución. De esta manera, puede implementarse ese modelo de gestión. Una nota a tener en cuenta es que la máscara de señal de cada hilo es heredada del hilo padre.
El enmascaramiento de las señales es algo a tener en cuenta. En principio, debe hacerse con pthread_sigmask, no con sigaction, ya que este segundo caso cambia el de todo el proceso.
Referencias:
Technical Q&A QA1184
A Primer on Signals in the Solaris OS, Part 1
The Linux Signals Handling Model
Thread-Specific Data and Signal Handling in Multi-Threaded Applications
Requirements of the POSIX Signal Model por Ulrich Drepper
Programming POSIX Threads
Technorati Tags: unix
1 comentario:
Me encantan estos blogs que no sirve para nada pero que estan llenos de estúpida publicidad.
Por si tu hilo en ejecución no lo ha notado estoy siendo irónico. Dédicate a otra cosa tío.
Publicar un comentario