Bonjour,
Toujours sur mon projet serveur multi-client, je rencontre un comportement bizarre. Voici en gros le schema de fonctionnement de mon serveur :
Creation de la socket d'écoute sur le port défini
Boucle principale en attente des nouvelles connections (select(...))
Arrivée d'une connection (new_sock = accept(...))
Lancement du thread de gestion du client (pthread_create(...))
Fin boucle principale
:Thread gestion du client
inotify_init()
Boucle d'écoute sur la sock transmise (select(...))
recv()/send() ...
Fin boucle
Jusque là rien de bien transcendant, sauf que normalement la boucle principale devrait faire des accept avec des new_sock qui vont on s'incrémentant de +1 (si les connections déjà ouvertes ne sont pas close()). Hors dans mon cas, j'ai parfois +1 +2 ....+5 etc. Du coup quand je lance 9 clients au lieu d'avoir 5-6-7-8-9-10-11-12-13 j'ai des trucs genre 6-7-9-11-12-15-17-18-20
J'avais déjà fait un serveur multiclient mais sans thread avec juste une boucle select et les numéros de sock accept se suivaient parfaitement bien. Donc j'en conclue que le thread influe sur cette série ... mais comment ? Je sais que les threads utilisent la mémoire du programme principale, serait-ce donc le inotify_init ou autre chose qui influencerait le numéro retourné par le accept de la boucle principale ?
J'avoue ne pas trop situer le souci ...
Partager