-
c# et client irc
bonjour,
je tente de créer un client irc et je voulais savoir quelque chose lorsque l'on utilise les socket asynchrone il y a un thread caché derrière du coup pour un client irc il risque d'y avoir plusieurs socket donc chaque socket aura son thread ? est il mieux d'utiliser cette technique à savoir les socket asynchrone ou de se créer un thread dédié a receive sur toutes les socket créer normalement donc sans utiliser le système asynchrone ?
-
Que tu utilises les socket en asynchrone ou bien en synchrone avec une gestion de thread à côté cela revient au même dans le principe.
Après, la grosse différence c'est que les appels asynchrones se font sur le pool de threads (cf. classe ThreadPool) et ce pool à une limite. 25 threads (la valeur peut être modifiée, par défaut c'est 25) peuvent s'exécuter en même temps dans le pool. Si on ajoute d'autres threads, ils seront mis en attente le temps qu'une place se libère. Mal utilisé cela peut poser des problèmes de performances donc :aie:
Généralement on se sert du pool de threads pour des opérations de courte durée (évite ainsi la famine puisqu'il y aura normalement toujours de la place disponible dans le pool) et c'est le but du pool de threads à la base il me semble. Pour un client IRC on est pas trop dans ce cas de figure, je pense donc qu'il serait plus propre de gérer les threads soit même à ce moment. Néanmoins rien n'empêche d'utiliser les appels asynchrones.
Maintenant j'espère que quelqu'un ayant de l'expérience dans ce domaine passera par là car je ne me considère pas comme un spécialiste des threads et une réponse plus étayée m'intéresserais :)
-
salut
le mieux est d'avoir un thread par socket :)
Après, il y a peu de risque que cela te plombe tes performances dans la mesure ou l'activité sur les sockets et donc, de chaque thread sera réduite.
Après, il faut savoir que plus tu as de thread, plus l'OS doit basculer entre chaque thread.
L'interet des threads est de dissocier des traitements qui peuvent l'etre et qui ne requiert pas forcément d'être exécuté dans un temps défini. Typiquement, l'écoute d'un port, d'une socket correspond bien à ce cas de figure puisque l'activité de chaque thread sera , à mon avis, faible !!!
The Monz, Toulouse