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 :

[SDL Thead C++] problème lors du kill d'un thread : plantage de mon programme complet


Sujet :

SDL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 38
    Points : 47
    Points
    47
    Par défaut [SDL Thead C++] problème lors du kill d'un thread : plantage de mon programme complet
    Bonjour,

    je suis sur le développement d'un jeu (genre othello), et dans ma boucle principale, je crée un thread qui va faire le calcul de mon meilleur coup. Mais je l'arrète au bout de 5 secondes, car c'est le temps imparti pour laisser l'ordinateur calculer son meilleur coup possible.

    Le thread de calcul met donc à jour une variable pour le meilleur coup, et après les 5 secondes, je le tue avec "SDL_KillThread(monThread);" mais lors de l'execution de cette commande, il y a de temps en temps un bug quand je le tue (oui, des fois ça marche, des fois non) :
    - soit mon programme plante completement (un kill-9 s'impose !)
    - soit mon programme me fait l'erreur d'excution suivante :
    >terminate called without an active exception
    >Aborted

    Dans le cas où il n'y a aucun bug, le nouveau thread calcul comme il faut les meilleurs coups, et se termine bien. J'ai bien sur utilisé un SDL_mutex pour les sections critiques.

    Merci

  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 : 43
    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
    Sans voir le code ce sera difficile de donner un avis mais la question serait pourquoi ne pas tester le temps au sein du thread.

    Si tu sors de la fonction du thread, alors le thread s'arrête.

    Il suffirait de vérifier l'heure et sortir de la fonction. Avant de sortir de la fonction, met une variable à jour pour dire au thread de base que le calcul est terminé...

    Jc

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 38
    Points : 47
    Points
    47
    Par défaut
    je vais essayer de faire un truc du genre. Le problème c'est que le calcul du meilleur coup passe dans des fonctions récursives et des constructeurs qui bouffent pas mal de temps (merci gprof ! ). Mais je vais voir si ya moyen de faire un truc du genre.


    sinon à priori, le problème se pose que sur powerpc. Sur intel il n'y a pas de problème. Je ne vois pas trop en quoi l'archi peut poser un problème la dedans.

Discussions similaires

  1. [XL-2010] Problème lors de l'enregistrement d'une copie de mon fichier
    Par eric4459 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 31/05/2015, 21h28
  2. Réponses: 17
    Dernier message: 20/11/2014, 11h42
  3. Problème lors du link avec Boost thread.
    Par Andarus dans le forum Boost
    Réponses: 1
    Dernier message: 16/02/2012, 16h43
  4. Problème lors du chargement
    Par carlito dans le forum Flash
    Réponses: 26
    Dernier message: 06/01/2004, 15h21
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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