¿Qué sucede con los hilos infantiles cuando sus padres mueren en GHC Haskell?

La documentación paraforkIO dice

GHC note: the new thread inherits the masked state of the parent (see mask).

The newly created thread has an exception handler that discards the exceptions
BlockedIndefinitelyOnMVar, BlockedIndefinitelyOnSTM, and ThreadKilled, and passes
all other exceptions to the uncaught exception handler.

¿Por qué se descarta el controlador de excepciones secundario?ThreadKilled? ¿Hay alguna conexión entre los dos hilos después de que se crean?

¿Qué sucede exactamente cuando el hilo principal muere? ¿El niño recibe alguna excepción? ¿O hay alguna forma de ver desde la perspectiva del niño que el padre murió? ¿Hay algo más que sucede, excepto que el subproceso principal simplemente deja de ejecutarse?

La razón por la que pregunto esto es que en muchos casos me veo obligado a crear un hilo en un contexto donde no puedo acceder al alcance de los padres. Solo imagina que estás en algún lugar profundo de una biblioteca y necesitas llamarforkIO, y que ese hilo muera cuando el padre muere. ¿Es necesario reestructurar el programa y propagar al niño?ThreadId hasta el padre y explícitamente matarlo? ¿O hay alguna otra solución para esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta