Una respuesta un tanto satisfactoria:
El corazón del nuevo gestor de GHC IO es un bucle kqueue()/epoll()
evento. Por lo tanto, esperaría que todo lo que se puede construir además de esto sea elegible, si no ahora, luego. En particular, esto significa:
El código (lo miraba hace unos meses y las cosas podrían haber cambiado) también contiene soporte para el registro y corriendo los tiempos de espera de varios tipos a través de una cola de prioridad (búsqueda). Esto sugiere que la mayoría de las llamadas similares a sleep
también pueden estar colándose en la interfaz.
Acerca del acceso a la base de datos: seguro, a menudo accede a la base de datos a través de un conector IO de red, por lo que llamar al forkIO
y acceder a bases de datos en un hilo separado debe ser posible, rápido y seguro. La comunicación de datos al resto de la aplicación se puede hacer con uno de los medios de simultaneidad, Chan
o STM.TChan
.
No creo que haya tipos de IO en los que el administrador tenga que recurrir al bloqueo per se, pero me imagino que algunas bibliotecas pueden eludir al nuevo administrador de IO e ir directamente a la yugular. Ellos, por supuesto, bloquearán.
Wow ... 4 favoritos pero solo un voto positivo. Eso es extraño. – fuz
@FUZxxl StackOverflow tiene favoritos? Me acabo de dar cuenta de eso por tu comentario. – alternative
@monadic Sí, hay. Simplemente presione el botón de inicio justo debajo de una pregunta para preferirlo. Si algo cambia, recibirá una notificación como si fuera su propia pregunta. – fuz