Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Brusque lags avec thread & gérance de temps  (Lu 5559 fois)

0 Membres et 1 Invité sur ce sujet

AnselmeSfml

  • Jr. Member
  • **
  • Messages: 78
    • Voir le profil
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #15 le: Octobre 19, 2014, 08:36:04 pm »
Oui, j'en suis conscient, mais je ne vois autrement aucune manière de faire qui respecte ce cahier des charges:
  • L'utilisateur a seulement besoin d'appeler l'affichage de la carte une fois lors de sa propre boucle principale.
  • Les animations sont gérées dans la classe Map: l'utilisateur n'a pas à intervenir, seulement au début pour les activer.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #16 le: Octobre 19, 2014, 10:44:04 pm »
Si tu veux absolument faire comme ça alors je ne vais pas me battre, de toute façon tu te rendras compte toi-même très rapidement des inconvénients de cette façon de faire.

Mais si tu utilises des threads, alors fais-le bien. En l'occurence, assure-toi de bien protéger toutes les variables partagées pour éviter les accès concurrents. Et fais moi plaisir, insère un peu d'attente passive (sf::sleep) dans cette boucle infinie qui monopolise le CPU pour rien :P
Laurent Gomila - SFML developer

AnselmeSfml

  • Jr. Member
  • **
  • Messages: 78
    • Voir le profil
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #17 le: Octobre 20, 2014, 12:15:07 pm »
Mais quels sont justement ces inconvénients? C'est le seul thread que j'utiliserai dans tout le moteur, c'est pas comme ci j'avais 1 thread par animation! Je placerai des sleep.

Merci encore

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #18 le: Octobre 20, 2014, 12:22:27 pm »
Tu auras les mêmes inconvénients que tout code qui utilise plus d'un thread :
- la gestion des threads ça ajoute du boulot au CPU (si tu en as un supplémentaire pour toute ton appli ça reste toutefois complètement négligeable)
- à chaque fois que tu accèdes à une variable partagée entre plusieurs threads il faut protéger cet accès pour éviter les accès concurrents
- conséquence du point précédent : ton code gagne rapidement en complexité, juste pour la gestion du threading, et ta logique se trouve plus ou moins noyée dans tout ça

En général on utilise les threads lorsqu'on veut que deux choses se déroulent en parallèle. Or toi, ce que tu veux paralléliser à ton thread principal, c'est... rien, juste de l'attente. C'est pour ça que ça n'a vraiment pas de sens. De plus, les threads sont généralement une réponse à un problème technique (plusieurs calculs qui ne doivent pas se bloquer les uns les autres), or toi tu les utilises pour économiser à l'utilisateur un appel de fonction ; c'est plus que douteux et personnellement je ne ferai jamais ça ;)
Laurent Gomila - SFML developer

AnselmeSfml

  • Jr. Member
  • **
  • Messages: 78
    • Voir le profil
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #19 le: Octobre 20, 2014, 07:41:49 pm »
Après avoir calmement relu ce post, je viens de régler mon problème sans utiliser de thread et d'une simplicité déconcertante ;D

En effet, je me suis rendu compte que la boucle infinie utilisée dans le thread était la même réalisée dans la boucle principale d'affichage... J'ai donc utilisé celle-ci pour appeler la méthode "anime()" originellement appelée dans la boucle du thread. L'utilisateur n'a plus qu'à faire appel à carte.anime() lors de la boucle principale et le tour est joué !  :P

Je vois déjà ta tête: il me réexplique tout ce que je lui est dis de faire depuis le début...  :'(

En bref, merci, tu as résolu mon problème. :)



Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #20 le: Octobre 20, 2014, 08:27:17 pm »
Citer
Je vois déjà ta tête: il me réexplique tout ce que je lui est dis de faire depuis le début...
;D

Ce qui compte c'est que tu aies fini par comprendre tout ça. Et comme tu l'as plus ou moins retrouvé par toi-même, ce sera même mieux que si tu avais appliqué bêtement mes conseils ;)
Laurent Gomila - SFML developer