¿Se necesitan grupos de hilos para el código puro de Haskell?

EnReal World Haskell, Capítulo 28, Software de memoria transaccional, se desarrolla un verificador de enlaces web concurrente. Obtiene todos los enlaces en una página web y los golpea cada vez con una solicitud HEAD para averiguar si el enlace está activo. Se toma un enfoque concurrente para construir este programa y se hace la siguiente declaración:

No podemos simplemente crear un hilo por URL, ya que puede sobrecargar nuestra CPU o nuestra conexión de red si (como esperamos) la mayoría de los enlaces están activos y son receptivos. En su lugar, utilizamos un número fijo de subprocesos de trabajo, que recuperan las direcciones URL para descargar de una cola.

No entiendo completamente por qué se necesita este conjunto de hilos en lugar de usarforkIO para cada enlace. AFAIK, el tiempo de ejecución de Haskell mantiene un conjunto de subprocesos y los programa de manera apropiada, por lo que no veo que la CPU esté sobrecargada. Además, enuna discusión sobre la concurrencia en la lista de correo de Haskell, Encontré la siguiente afirmación en la misma dirección:

El único paradigma que no tiene sentido en Haskell son los hilos de trabajo (ya que RTS lo hace por nosotros); En lugar de ir a buscar un trabajador, solo forkIO en su lugar.

¿El conjunto de hilos solo se requiere para la parte de la red o también hay una razón de la CPU para ello?

Respuestas a la pregunta(1)

Su respuesta a la pregunta