On Wed, May 12, 2004 at 09:54:30AM +0200, Mickael Vera wrote:
Tu sera quand même obligé de forker à chaque fois que ton
select trouvera une socket de disponible si tu ne veux pas
que le traitement d'une socket bloque les autres. Et le fork
est assez gourmand il me semble par rapport à des implémentations
légères de threads.
"Si je ne veux pas": il faut donc faire le choix entre
traiter N connections en série à vitesse max V, ou bien
traiter N connections en parralèle à vitesse V/N: avec la
solution multi-process/multi-thread, on garanti qu'aucune
connection ne peut être traitée à vitesse maximale. Tout
dépend bien entendu de l'application et de la durée des
connections, mais le multi-process est plus souvent inutile
que le contraire.
Le fork est légèrement plus gourmant que le thread, mais pas
tellement plus sous Linux (essentiellement, il faut une
structure de mémoire virtuelle par process alors que tous
les threads d'un process partage la même, et il faut
également changer le contexte quand on change de process...
Une machine Linux change de contexte tout le temps de toute
façon, l'impact de performance n'est pas en général très
important).
Y.