Un peu de réponse satisfaisante:
Le cœur de la nouvelle GHC IO manager est un kqueue()/epoll()
boucle d'événements. Donc je m'attends à quelque chose qui peut être construit sur le dessus de cela pour être admissible, si ce n'est maintenant, puis, plus tard. Cela signifie en particulier:
- E / s de fichier
- Les e / s réseau
Le code (je l'ai regardé il y a quelques mois, et les choses ont peut être changé) contient également un soutien pour l'enregistrement et l'exécution de délais d'attente de plusieurs genres à travers une priorité (recherche) de la file d'attente. Cela suggère que la plupart des sleep
-comme les appels peuvent également être se greffer sur l'interface.
À propos de l'Accès à la Base: bien sûr, vous avez souvent l'accès à la base de données à travers un réseau IO prise afin de l'appelant forkIO
et en faisant DB accès dans un thread séparé devrait être faisable, rapide et sécurisé. La communication de données vers le reste de l'application peut être fait avec un de la simultanéité des moyens, Chan
ou STM.TChan
.
Je ne pense pas qu'il y a des genres de IO où le gestionnaire a recours à de blocage en soi, mais je peux imaginer que certaines bibliothèques peuvent contourner le nouveau gestionnaire d'e / s et aller directement à la jugulaire. Ils seront, bien sûr, de les bloquer.