IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SDL Discussion :

Thread ou pas Thread ?


Sujet :

SDL

  1. #1
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut Thread ou pas Thread ?
    Bonjour !


    Voià, dans mon projet de jeu et en cours de développement d'une petite API et un petit moteur, je me pose soudain quelques questions !

    J'avais pour idée de faire un sorte de Scheduler de rendu régi bien sûr pas une liste chaînée comme il se doit. Ce module permettrais de gérer de façon totalement autonome le rendu des objets qu'on lui injectes dans sa liste tout en prennant en compte le délais de rafraîchissement de chacun d'eux et le supprimerais en cas de besoin (ex: la mort d'un ennemi).

    Jusqu'ici l'idée paraît pas si mal et j'en suis pas peu fier Je me pose tout de même quelques questions :

    1. Un Thread est-il mieux pour ce genre de chose ?
    2. Ormis le fait de ne pas oublier les verrous au bons endroits, quelles serait grosso modo la différence d'utilisation en ressource et de perfomance entre la méthode Thread et sans Thread ?



    Merci bien

  2. #2
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Franck.H
    Jusqu'ici l'idée paraît pas si mal et j'en suis pas peu fier
    Je suis d'accord sur la solution ca me semble pas mal !

    1. Un Thread est-il mieux pour ce genre de chose ?
    2. Ormis le fait de ne pas oublier les verrous au bons endroits, quelles serait grosso modo la différence d'utilisation en ressource et de perfomance entre la méthode Thread et sans Thread ?
    Ca dépend de comment tu le gères. La question thread-pas de thread est difficile à répondre. Généralement, si on peut, il vaut mieux faire deux versions et comparer.

    L'expérience montre que certains threads vont facilités l'implémentation mais si le programme passe son temps à gérer des verrous, cela ne sera pas optimal.

    Jc

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par fearyourself
    L'expérience montre que certains threads vont facilités l'implémentation mais si le programme passe son temps à gérer des verrous, cela ne sera pas optimal.
    Bin toutes les coordonnées joueur et des ennemis qui sont tout le temps mis à jour, je pense que déjà là il va passer sont temps à prendre et libérer le verrou

  4. #4
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Franck.H
    Bin toutes les coordonnées joueur et des ennemis qui sont tout le temps mis à jour, je pense que déjà là il va passer sont temps à prendre et libérer le verrou
    Effectivement.

    De toute facon pour ce genre de jeu, je ne pense pas que des threads séparés rendu/gestion des objets soient vraiment nécessaire. Mais avec une bonne gestion des verrous, cela pourrait donner quelque chose de sympa.

    Jc

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par fearyourself
    Effectivement.

    De toute facon pour ce genre de jeu, je ne pense pas que des threads séparés rendu/gestion des objets soient vraiment nécessaire. Mais avec une bonne gestion des verrous, cela pourrait donner quelque chose de sympa.

    Jc
    En fait ce n'est pas directement le jeu mais un petit moteur plus ou moins generique en 2D avec une petite API, autant faire les choses correctement J'envisage de l'utiliser pour d'autres futurs projets

  6. #6
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Franck.H
    En fait ce n'est pas directement le jeu mais un petit moteur plus ou moins generique en 2D avec une petite API, autant faire les choses correctement J'envisage de l'utiliser pour d'autres futurs projets
    Ah alors pour un cas plus général, je pense qu'il faudrait viser le multi-thread si on vise haut. Par contre, cela va forcément compliquer la donne.

    Le plus simple serait alors sûrement de faire un lock/unlock pour chaque modification de l'objet. Mais cela va effectivement coûter beaucoup plus en terme de ressources.

    Il faudrait trouver une solution plus light pour ne pas devoir faire un lock/unlock pour chaque objet.

    Enfin, comme toujours, je partirais sur une solution de lock/unlock pour chaque objet et si les performances sont vraiment lamentable, j'aviserais. Si cela se trouve, ce ne sera pas très grave.

    Jc

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par fearyourself
    Ah alors pour un cas plus général, je pense qu'il faudrait viser le multi-thread si on vise haut. Par contre, cela va forcément compliquer la donne.

    Le plus simple serait alors sûrement de faire un lock/unlock pour chaque modification de l'objet. Mais cela va effectivement coûter beaucoup plus en terme de ressources.

    Il faudrait trouver une solution plus light pour ne pas devoir faire un lock/unlock pour chaque objet.

    Enfin, comme toujours, je partirais sur une solution de lock/unlock pour chaque objet et si les performances sont vraiment lamentable, j'aviserais. Si cela se trouve, ce ne sera pas très grave.

    Jc
    C'est exactement ca que je pensais, de toutes manière pas trop le choix avec les thread Va falloir que je fasse un programme de test pour tester tout ca avant l'implémentation dans le jeu quand on le démarera

  8. #8
    Expert éminent sénior

    Avatar de fearyourself
    Homme Profil pro
    Ingénieur Informaticien Senior
    Inscrit en
    Décembre 2005
    Messages
    5 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur Informaticien Senior
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2005
    Messages : 5 121
    Points : 11 877
    Points
    11 877
    Par défaut
    Citation Envoyé par Franck.H
    C'est exactement ca que je pensais, de toutes manière pas trop le choix avec les thread Va falloir que je fasse un programme de test pour tester tout ca avant l'implémentation dans le jeu quand on le démarera
    Non je ne pense pas vraiment. Si tu codes proprement, tu devrais pouvoir avoir une gestion avec thread et une version monothread sans que cela change grand chose à l'extérieur.

    La seule vraie différence serait la zone de code qui modifie les objets (des mutex dans un cas, aucun dans l'autre) et un appel au code qui gére le rendu dans un cas et une création de thread dans l'autre.

    Soit avec des #if #endif tu peux facilement faire les deux versions en même temps et comparer avec le produit complet.

    Jc

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par fearyourself
    Non je ne pense pas vraiment. Si tu codes proprement, tu devrais pouvoir avoir une gestion avec thread et une version monothread sans que cela change grand chose à l'extérieur.

    La seule vraie différence serait la zone de code qui modifie les objets (des mutex dans un cas, aucun dans l'autre) et un appel au code qui gére le rendu dans un cas et une création de thread dans l'autre.

    Soit avec des #if #endif tu peux facilement faire les deux versions en même temps et comparer avec le produit complet.

    Jc
    Oui pas bête effectivement, à ca j'avais pas pensé Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Thread ou pas Thread
    Par jadey dans le forum Général Java
    Réponses: 13
    Dernier message: 22/02/2014, 01h38
  2. Threading ou pas threading?si oui, comment?
    Par nanettemontp dans le forum Windows
    Réponses: 59
    Dernier message: 10/10/2007, 11h55
  3. threads pas Thread ! (1 tte tite question)
    Par lagra3 dans le forum Langage
    Réponses: 3
    Dernier message: 11/08/2006, 13h28
  4. [blem C++ thread ou pas threads]
    Par fastzombi dans le forum Threads & Processus
    Réponses: 2
    Dernier message: 29/10/2005, 00h09
  5. [THREAD][DAEMON]Pas bien compris....
    Par XristofGreek dans le forum Concurrence et multi-thread
    Réponses: 2
    Dernier message: 24/09/2004, 14h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo