|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éprouvé
![]() Jérémy DeprezDéveloppeur .NET Inscription : mai 2010 Messages : 270 ![]() |
J'ai trouvé pas mal d'articles concernant le multi-threading, notamment ceux çi
http://www.developpez.net/forums/d20...artie-serveur/ http://www.developpez.net/forums/d78...t-serveur-jeu/ http://www.developpez.net/forums/d58...-multi-thread/ Mon objectif est de réaliser un serveur ( en .NET ) qui pourrait tenir facilement les 10.000joueurs pour un jeux en tour par tour en 2D iso. Malheureusement je peine à comprendre la structure que doit adopter mon application car beaucoup d'avis divergent, et je ne m'y retrouve plus vraiment Pour l'instant j'ai réussi à en retirer ceci : *Utiliser des Sockets non bloquants *Préférable d'utiliser des pools de threads, afin d'éviter d'instancier des threads sans arrêt. *1 thread = 1Client c'est le mal ![]() *L'idéal est de grouper x clients dans un thread ( 100Clients par exemple ) J'ai entendu parler de l'I/O Completion port, mais j'ai pas trop compris la mise en place. Je n'arrive pas à trouver une structure adapté pour réaliser le multi-threading ( je reste centré sur ma vision 1thread=1client Quelque chose comme ceci conviendrai t'il ? Listener – Un Thread en attente de connection, accepte les connexions, et les envoit à un des I/O Workers I/O-Worker(s) – Un ou plusieurs threads qui recoivent / envoient les informations au client.(répartir ~100clients/thread) Data Processing Worker(s) – Un ou plusieurs threads qui recoivent les infos de IO Workers afin de les traiter et renvoyer de nouvelles infos. (Thread IA,Thread BDD,thread traitement...) |
|
|
00
|
|
|
#2 | |
![]() ![]() Inscription : décembre 2006 Messages : 1 612 ![]() |
Citation:
Donc à mon avis (et comme souvent) on n'optimise pas à priori mais une fois qu'on a constaté les points 'chauds' et les limitations d'une première implémentation déjà développée et fonctionnelle. Je serais toi, je commencerais par faire une version simple et basique ; c'est seulement quand tu auras beaucoup de monde qu'il sera temps de voir là ou ça coince et d'adapter en conséquence. Bien sûr, pour éviter d'avoir à tou réécrire à chaque fois, il faut quand même penser faire un code -certes simple - mais propre.
__________________
Mon projet du moment: BounceBox, un jeu multijoueurs sur Freebox, sur PC et depuis peu sur smartphone/tablette Android. |
|
|
|
00
|
|
|
#3 |
|
Membre éprouvé
![]() Jérémy DeprezDéveloppeur .NET Inscription : mai 2010 Messages : 270 ![]() |
Disons 30.000joueurs alors
Je développe surtout pour acquérir de nouvelles connaissances, et le multithreading / optimisation pour les process multicore m'est encore inconnu |
|
|
00
|
|
|
#4 | |
|
Expert Confirmé Sénior
![]() Développeur informatique Inscription : novembre 2006 Messages : 4 445 ![]() |
Salut
Citation:
Si tu fais un jeu en réseau au tour par tour eh bien tu seras obligé de bloquer le jeu en attendant que tout le monde ait joué..sinon ce n'est plus du tour par tour et ceci même si tu as ,supposons,10000 clients. Donc je ne vois pas trop l'intérêt de créer un thread par client il suffit juste un thread de connection qui attende les données. Pour gérer le tour par tour un simple tableau de booléen suffit |
|
|
|
00
|
|
|
#5 | |
![]() ![]() ![]() Raymond Inscription : mai 2007 Messages : 9 036 ![]() |
Citation:
Je ne saurais te conseiller la lecture du livre http://www.amazon.com/Network-Programming-Microsoft-Windows-Pro-Developer/dp/0735615799 pour la partie socket.
__________________
Raymond Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi ![]() Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.e-verbe Un logiciel de conjugaison des verbes de la langue française.Ma page personnelle sur DVP. |
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com