Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
591 connectés 

  FORUM HardWare.fr
  Programmation
  Algo

  Débat théorique à propos d'une utilisation des sockets et des threads

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débat théorique à propos d'une utilisation des sockets et des threads

n°817024
madprog
Posté le 07-08-2004 à 03:08:46  profilanswer
 

Je serais intéressé par la programmation d'un serveur qui à la base ressemblerait à un serveur irc, mais avec un gros traitement des utilisateurs, dans le but de leur attribuer des positions sur un terrain, tout ca.
 
Vous m'avez compris, ca ressemble de très près à un jeu de rôle...
 
Je voulais savoir quelle serait, selon vous, l'organisation la plus efficace :
 
 - 1 seul gros thread qui gère tous les clients (10, 100, 1000, ...) et le moteur du jeu
 - 2 threads, un qui gère les clients et un autre le moteur
 - un thread par client, dialoguant avec un gros thread qui gère le moteur
 - toute autre solution à laquelle je n'ai pas pensé (il y en a surement plein)
 
Merci d'avance pour vos idées et vos conseils
 
::madprog::

mood
Publicité
Posté le 07-08-2004 à 03:08:46  profilanswer
 

n°817036
Taz
bisounours-codeur
Posté le 07-08-2004 à 08:34:53  profilanswer
 

" - un thread par client, dialoguant avec un gros thread qui gère le moteur "
 
à la trappe

n°817117
madprog
Posté le 07-08-2004 à 13:33:54  profilanswer
 

oui, je pencherais plus pour les 2 threads en fait

n°817119
Taz
bisounours-codeur
Posté le 07-08-2004 à 13:38:49  profilanswer
 

le pool de thread :o

n°817144
antsite
Je me souviens
Posté le 07-08-2004 à 14:54:45  profilanswer
 

je comprends pas bien, pool de thread c'est pas un thread par client ? pourtant tu as dit à la trappe non ?

n°817206
madprog
Posté le 07-08-2004 à 18:42:38  profilanswer
 

c'est quoi le pool de thread ?
 
enfin je veux dire, en quoi ca consiste ?


Message édité par madprog le 07-08-2004 à 22:54:31
n°817299
madprog
Posté le 07-08-2004 à 22:55:41  profilanswer
 

hmm... ca a l'air d'etre un truc qui vient de C# et VB :/ enfin d'après mes recherches sommaires

n°817361
Taz
bisounours-codeur
Posté le 08-08-2004 à 02:10:58  profilanswer
 

ça a rien à voir.

n°817364
madprog
Posté le 08-08-2004 à 02:13:56  profilanswer
 

bah c'est quoi alors ? ^^

n°817365
Jubijub
Parce que je le VD bien
Posté le 08-08-2004 à 02:15:57  profilanswer
 

bens c mettons 10 threads frères, qui tapent tous dans une liste de chose à faire...dès qu'un thread a fini, il cherche qqc dans la liste ...si y'a rien, il dort...


---------------
Jubi Photos : Flickr - 500px
mood
Publicité
Posté le 08-08-2004 à 02:15:57  profilanswer
 

n°817370
madprog
Posté le 08-08-2004 à 02:20:53  profilanswer
 

oula ca doit etre chaud a gerer une liste comme ca... on met quoi dedans  :??:


Message édité par madprog le 08-08-2004 à 02:21:04
n°817372
farib
Posté le 08-08-2004 à 02:23:20  profilanswer
 

madprog a écrit :

oula ca doit etre chaud a gerer une liste comme ca... on met quoi dedans  :??:


pourquoi ce serait chaud ?
 


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°817373
Taz
bisounours-codeur
Posté le 08-08-2004 à 02:23:32  profilanswer
 

des tâches

n°817378
madprog
Posté le 08-08-2004 à 02:31:11  profilanswer
 

bah je sais pas, qu'est ce que tu appelles une tâche ? un pointeur de fonction ?

n°817408
Taz
bisounours-codeur
Posté le 08-08-2004 à 10:15:58  profilanswer
 

tu me fait bien marrer, tu nous fait un topic Algo/Débat théroique, et tu incapable de d'abstraire de quoi que ce soit. Je te dis pool de threads, tu dis que ça va pas que c'est duVB, je dis tâche, tu parles C ...

n°817436
cassidy
Black Rainbow
Posté le 08-08-2004 à 11:53:01  profilanswer
 

Récapitulons:
Soit n clients connectés sur le serveur.
Les différentes politiques sont:
 
- 2 threads: le premier gère le moteur, le 2e fait des lectures non bloquantes sur les n sockets; qd il recoit une requête sur une socket, il la traite ou la délègue au moteur.
 
- 1 thread pour le moteur. n threads qui font chacun une lecture bloquante sur une socket, qd ils recoivent qqchose ils traitent ou délèguent au moteur.
Pas l'eden si on a beaucoup de clients connectés je présume.
 
- pool de threads: les threads frères composant le pool traitent les taches de la liste. Un unique thread fait des lectures non bloquantes sur les n sockets et rajoutent les taches dans la liste?
 
C'est bien ça?

n°817499
madprog
Posté le 08-08-2004 à 14:44:17  profilanswer
 

Taz a écrit :

tu me fait bien marrer, tu nous fait un topic Algo/Débat théroique, et tu incapable de d'abstraire de quoi que ce soit. Je te dis pool de threads, tu dis que ça va pas que c'est duVB, je dis tâche, tu parles C ...

désolé... je voulais voir ce que vous auriez fait, et quand tu me parles du pool de thread, je cherche tout de suite comment l'appliquer... donc je pense à un language, et je ne vois pas du tout ce qui peut faire office de tâche ici...

n°817500
madprog
Posté le 08-08-2004 à 14:44:54  profilanswer
 

cassidy, oui

n°817505
farib
Posté le 08-08-2004 à 15:22:00  profilanswer
 

madprog a écrit :

désolé... je voulais voir ce que vous auriez fait, et quand tu me parles du pool de thread, je cherche tout de suite comment l'appliquer... donc je pense à un language, et je ne vois pas du tout ce qui peut faire office de tâche ici...


 
bein une tâche, c'est toi
 
 
blague à part, c'est par exemple les clients en attente d'être servis


---------------
Bitcoin, Magical Thinking, and Political Ideology
n°817525
madprog
Posté le 08-08-2004 à 16:36:12  profilanswer
 

comment je l'attendais la blague...

n°817529
Jubijub
Parce que je le VD bien
Posté le 08-08-2004 à 17:16:43  profilanswer
 

ca semble évident la def d'une tache si t'y réfléchi...c qqc qu'un thread doit faire....
 
par ex pour un server web, une tache c'est s'occuper d'une requete...t'a une liste de requetes, et des threads qui tapent dedans...


---------------
Jubi Photos : Flickr - 500px
n°817557
madprog
Posté le 08-08-2004 à 19:07:02  profilanswer
 

ouais, vu comme ca, je comprends :)

n°817612
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2004 à 20:38:46  profilanswer
 

J'ai commencé à faire la même choses (plus ou moins) et j'ai opté pour :
 
- Un thread par client (mais qui gère tout le perso, pas seulement sa connection)
- Dans le thread principal, je ne gère que la map, et chaque thred "client" pointe vers une case de cette map
- Un thread de "thick" (défini la fin d'un tour si tu compte limiter le nombre d'actions dans le temps, redonner des HP en dormant, etc.)
- Les mobs sont gérés dans des threads identiques à ceux des joueurs, à l'exception qu'à la place d'une connection il y a un petit moteur d'IA qui les fait se déplacer et réagir avec leur entourage.
 
Je pense que mon système peut être très lourd, mais permet de vraiment s'élcater pour ce qui est de l'IA des mobs ; on peut vraiment imaginer des mobs qui évoluent comme les joueurs, à la recherche de matos et d'xp, qui se souviennent de trucs du genre "tiens, c'est toi le méchant qu'a butté ma femme ! tiens, meurts !"
 
Sinon, tu peux faire une recherche de "mud" sur le net, tu trouveras des serveurs open source tous fait pour ce type de jeu.

n°817613
Jubijub
Parce que je le VD bien
Posté le 08-08-2004 à 20:40:48  profilanswer
 

1 thread par gars :eek: !!!!
 
y'a des OS qui ont des limites de thread non ?


---------------
Jubi Photos : Flickr - 500px
n°817617
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2004 à 20:51:54  profilanswer
 

bah chais pas. de toute façon sur ce type de jeux, quand t'es plus de 50 c'est le bordel alors :p

n°817618
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2004 à 20:52:37  profilanswer
 

bon, certes, après tu rajoutes les 100 000 threads de mobs et tu risque d'avoir un problème mais bon, c'est à tester :D

n°817619
Arjuna
Aircraft Ident.: F-MBSD
Posté le 08-08-2004 à 20:55:20  profilanswer
 

PS: en fait je voulais faire autant de threads que de gars / mobs car selon un certain nombre de critères, je voulais qu'une action dure plus ou moins longtemps pour chaque perso / mob. Et avec une boucle ca pose problème, parceque du coup t'es obligé de la faire tourner à fond la caisse pour que tous les persos fassent leur action au moment réellement imparti, ce qui provoque une charge élevée pour rien, alors qu'avec des threads il suffit de mettre un sleep paramètré dans la boucle des actions.

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Algo

  Débat théorique à propos d'une utilisation des sockets et des threads

 

Sujets relatifs
[XML]pb utilisation de msxml3.dll sous NT4[Cookie] Bug avec IE6 sur l'utilisation de cookie tiers ?
Petite question à propos de l'accès en mode binaire des fichiers...utilisation des fonctions images
Threads, pipes, attente et annulationUtilisation de variable dans lien pour paramétrer un objet
utilisation de mysql_free_resultgdb, c++ et difficultés d'utilisation
Utilisation d'une fonction écrite en C++Utilisation d'une fonction d'une dll
Plus de sujets relatifs à : Débat théorique à propos d'une utilisation des sockets et des threads


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR