En fait, il me semble (après un survol rapide du code) que ashd utilise des sortes de coroutines : plusieurs contextes d'exécutions dans une même thread noyau (voir les fichiers lib/mt*.{c,h}). J'ai déjà vu cette technique dans une bibliothèque dont j'ai malheureusement oublié le nom :-( . Ça utilise les fonctions getcontext(2) et setcontext(2).
Donc je crois que, même s'il n'y a pas de véritable exécution concurrente, les entrées/sorties ne sont pas bloquantes. Par contre, je n'ai jamais testé la montée en charge d'une telle technique. C'est assez proche de la programmation "événementielle" (libevent et compagnie), mais présenté différemment.
Par contre j'ai un peu peur du parser, moi aussi. Enfin, faut que je teste avant de critiquer :-)
[^] # Re: Désolé
Posté par Jérémie Pierson . En réponse à la dépêche Un nouveau serveur httpd : Ashd, A Sane HTTP Daemon. Évalué à 2.
Donc je crois que, même s'il n'y a pas de véritable exécution concurrente, les entrées/sorties ne sont pas bloquantes. Par contre, je n'ai jamais testé la montée en charge d'une telle technique. C'est assez proche de la programmation "événementielle" (libevent et compagnie), mais présenté différemment.
Par contre j'ai un peu peur du parser, moi aussi. Enfin, faut que je teste avant de critiquer :-)