epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 mars 2011
-
21 mars 2011 à 23:16
epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 mars 2011
-
22 mars 2011 à 19:16
Bonjour,
Je m'amuse actuellement à essayer de développer un prototype de MMO. J'ai cependant un problème concernant l'utilisation du multi-threading pour les différentes tâches du serveur.
A la base, j'utilisai l'approche "classique" à base de :
Service_Connection = new Thread(ServiceConnection);
Avec ma fonction "ServiceConnection" contenant une boucle infinie répétant en boucle les opérations d'acceptations d'une nouvelle connection.
Le problème est qu'avec la multiplication des "services" (enfin juste avec 7), mon PC rame à mort au point de ne même plus arrivé à afficher les composants du Windows Form qui me sert d'interface serveur.
J'ai donc changé pour une approche "Timer", en virant la boucle infinie dans mes fonctions (puisque le Service est rappelé en permanence par le Timer) :
System.Threading.Timer Service_Connection = new System.Threading.Timer(ServiceConnection, 0, 0, 1);
Et là bizarrement ça ne rame plus du tout, même avec un intervalle de 1ms pour chacun des 7 "Services".
Bref ça me semble trop beau
Suis-je en train de me planté complétement avec les Threading.Timers ?
Me suis-je planté avec les Threads "basiques" ?
Merci de vos réponses / conseils
epineurien
Messages postés83Date d'inscriptionsamedi 21 mai 2005StatutMembreDernière intervention22 mars 2011 22 mars 2011 à 19:16
*Teste*
Ah oui effectivement ... ca redevient "jouable" en insérant un Sleep(0). Merci de l'astuce, c'est franchement un truc auquel je n'aurais jamais pensé
Je pense finalement rester sur l'approche "Thread.Timer" : de ce que je lit sur internet, ça semble plus adapté pour un serveur multi-thread.