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

Auteur Sujet: Affichage de sprite et Threads  (Lu 2295 fois)

0 Membres et 1 Invité sur ce sujet

Milo

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Affichage de sprite et Threads
« le: Septembre 12, 2014, 06:58:03 pm »
Bonjour,

J'essaie d'afficher des images à partir de plusieurs threads depuis quelques semaines deja, pas de problème particulier avec le setActive() comme on pourrait se douter à la vue du titre du post mais un petit problème d'optimisation.
J'aurais besoin d'afficher disons une petite dizaine d'images qui bougeraient simultanément. J'ai donc utilisé un mutex pour que chaque thread ai son temps de parole, le problème est que les images ont une grosse tendance à clignoter, l'affichage peut être très bon comme très moyen et je suis persuadé qu'il est possible de faire mieux. Je pense que des images s'affichent plus fréquemment que d'autres, d'où le clignotement assez désagréable.
Ma question est donc comment est ce que je pourrai partager efficacement l'affichage de mes images, sans risque de "famine" ? (j'entends donc par famine qu'aucune image ne soit laissée de coté, dans l'idéal qu'elles s'affichent les unes après les autres sans qu'aucune ne soit laissée de coté)

Cordialement,
Mickael

TheKingArthur

  • Invité
Re : Affichage de sprite et Threads
« Réponse #1 le: Septembre 12, 2014, 11:36:12 pm »
Tu n'a pas un code à proposer ? Ca serai plus claire.

Je ne voit la problème.

Milo

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Re : Affichage de sprite et Threads
« Réponse #2 le: Septembre 13, 2014, 09:47:12 am »
Je n'ai pas vraiment de code à proposer, à la limite je peux t'en faire un petit rapidement pour que tu vois l'idée :
void affichage1(mutex* mut){
    //si mutex ok on affiche image1
    //sinon on attend
}

void affichage2(mutex* mut){
    //si mutex ok on affiche image2
    //sinon on attend
}

void affichage3(mutex* mut){
    //si mutex ok on affiche image3
    //sinon on attend
}

int main(){
    mutex* mut = new mutex;
    trhead1(affichage1, mut);
    thread1.detach();
    trhead2(affichage2, mut);
    thread2.detach();
    trhead3(affichage3, mut);
    thread3.detach();
    return 0;
}

 

Tu vois mieux le truc avec ça ?
Les images sont gérées avec le mutex mais rien n'empêche de laissé en famine l'un de ses threads qui ne sera donc pas affiché pendant un moment, ce qui rend selon moi l'effet de clignotement.
J'aimerai donc savoir si vous aviez une solution pour que chacune des images ai son temps de "parole" et qu'aucune ne soit pas affichée trop longtemps.
« Modifié: Septembre 13, 2014, 09:54:52 am par Milo »

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Affichage de sprite et Threads
« Réponse #3 le: Septembre 13, 2014, 09:54:32 am »
Citer
J'aurais besoin d'afficher disons une petite dizaine d'images qui bougeraient simultanément.

Un thread par animation est plus qu'overkill. Tu auras très probablement les pires performances imaginables, bien pire qu'un truc séquentiel.

Si t'es nouveau avec les threads, soit oublie les un moment encore, soit apprend des cas d'utilisation idéal. C'est pas ce genre d'outil qu'on utilise tous les jours.
SFML / OS X developer

Milo

  • Newbie
  • *
  • Messages: 10
    • Voir le profil
    • E-mail
Re : Affichage de sprite et Threads
« Réponse #4 le: Septembre 13, 2014, 10:01:28 am »
Effectivement je suis loin d'être complétement à l'aise avec les threads , c'est justement pour cette raison que j'essaie des trucs avec.
Si tu avais un "cas d'utilisation idéal" pour me mettre sur la voie, ce serait sympa  :)

Hiura

  • SFML Team
  • Hero Member
  • *****
  • Messages: 4321
    • Voir le profil
    • E-mail
Re : Affichage de sprite et Threads
« Réponse #5 le: Septembre 13, 2014, 10:46:16 am »
Il te faut bien plus qu'un cas d'utilisation, il te faut un bon bouquin qui t'explique tout ce qui va autour (genre section critique, synchronisation, ...). Regarde un peu sur le web ce que les gens proposent; je n'ai pas de livre à te proposer comme ça.
SFML / OS X developer

 

anything