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 6641 fois)

0 Membres et 1 Invité sur ce sujet

AnselmeSfml

  • Jr. Member
  • **
  • Messages: 78
    • Voir le profil
    • E-mail
Brusque lags avec thread & gérance de temps
« le: Octobre 18, 2014, 02:32:17 pm »
Bonjour!

Dans mon programme, j'utilise un thread qui gère une fonction qui s'occupe d'exécuter une instruction toutes les x millisecondes, et ce jusqu'à ce que l'utilisateur stop le thread. Seulement, j'observe graphiquement de brusques latences, qui apparaissent puis disparaissent de manière totalement aléatoire... J'ai tout d'abord pensé à réduire la fréquence taux d'appel de l'instruction en fonction, mais même toute les 10 secondes, il y a le même taux de latence qu'avec 10 millisecondes. Voilà mon code:

void Map::anime()
{
 m_clock.restart();
        do
        {
            if(m_clock.getElapsedTime() > sf::milliseconds(m_animationSpeed))
            {
                m_clock.restart();
                if(m_animationX<m_maxAnimationX-1) m_animationX += 1;
                    else m_animationX = 0;

                for(int z=0; z<m_height; z++)
                    for(int y=0; y<m_width; y++)
                        for(int x=0; x<m_width; x++)
                {
                    if(m_animationList[getIndexAtCase(x, y, z)]>1 && m_animationX<m_maxAnimationX) setCase(x, y, z, getIndexAtCase(x, y, z));
                }
            }
        } while(!m_stop);
}
 

Ce code s'occupe en fait d'animer des tuiles de la carte en changeant les texcords en question de mes sf::VertexArray.
Merci d'avance!
« Modifié: Octobre 18, 2014, 02:35:12 pm par AnselmeSfml »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #1 le: Octobre 18, 2014, 06:12:54 pm »
Pas besoin d'un thread pour faire ça. Tu rends ton code plus compliqué pour rien. Avec un peu de chance ça résoudra aussi ton problème.
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 #2 le: Octobre 18, 2014, 08:23:10 pm »
Ah? Mais du coup ça ne marchera plus, le programme ne fera que ça, non?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #3 le: Octobre 18, 2014, 09:02:52 pm »
Non, pas si tu le fais correctement ;)
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 #4 le: Octobre 18, 2014, 09:10:57 pm »
Euh... C'est à dire, correctement? Ma fonction tourne en boucle, comment puis-je exécuter en même temps tout le reste?

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #5 le: Octobre 18, 2014, 10:26:33 pm »
De la même manière que tout le reste, justement. Tu gères bien les évènements, la logique, l'affichage et je ne sais quoi d'autre dans ta boucle principale, non ? Alors pourquoi pas ça aussi ?
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 #6 le: Octobre 18, 2014, 10:47:01 pm »
Parce que je travaille sur un moteur de jeu, et ce doit être géré automatiquement dans la classe "Map".

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #7 le: Octobre 18, 2014, 10:51:18 pm »
Et alors ?
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 #8 le: Octobre 18, 2014, 11:06:48 pm »
Et alors, ceci ne peut être géré dans la boucle d'affichage, puisque le principe c'est que l'animation se gère automatiquement à l'intérieur de la classe en question, sans besoin des appels de fonction de la part de l'utilisateur ...   :-X
« Modifié: Octobre 18, 2014, 11:08:32 pm par AnselmeSfml »

AnselmeSfml

  • Jr. Member
  • **
  • Messages: 78
    • Voir le profil
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #9 le: Octobre 18, 2014, 11:50:01 pm »
Dois je revenir au thread?
« Modifié: Octobre 18, 2014, 11:55:02 pm par AnselmeSfml »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #10 le: Octobre 19, 2014, 10:31:58 am »
C'est une mauvaise façon de voir les choses. Fais donc comme tout le monde, une fonction Map::update() que tu appelles à chaque tour de ta boucle principale. Et évite les threads.
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 #11 le: Octobre 19, 2014, 05:02:28 pm »
Mais le problème, c'est que comme je travaille sur la création d'un moteur, l'utilisateur n'a seulement qu'à créer la carte, puis l'afficher avec app.draw(carte). C'est lui qui doit gérer sa boucle de mise à jour, car la carte n'est pas le seul truc qu'il a le droit d'afficher. C'est quelque chose qu'il a libre recours d'utiliser...

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #12 le: Octobre 19, 2014, 05:16:55 pm »
A toi de voir comment tu conçois ton moteur, mais techniquement c'est absurde d'utiliser un thread pour ça, c'est tout ;)
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 #13 le: Octobre 19, 2014, 05:41:35 pm »
D'accord, mais dans mon cas je suis obligé de faire appel aux threads. Mon moteur n'est pas mono-classe.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Brusque lags avec thread & gérance de temps
« Réponse #14 le: Octobre 19, 2014, 06:11:20 pm »
Mais tu te rends compte que ton thread, tel qu'il est écrit, pompe 100% de CPU pour ne rien faire ?
Laurent Gomila - SFML developer

 

anything