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

C++ Discussion :

probleme stack overflow en multithread


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 17
    Points
    17
    Par défaut probleme stack overflow en multithread
    salut,
    je creer un event lorsque j'ai des data qui entre par le com1 mais lorsque j'essaie de traiter les donnees le fais que mon event se reproduit tout le temps cela me donne un stack overflow.
    il faudrait que je trouve le moyen de mettre en pause le multitread une fois que j'ai recu des donnees pour avoir le temps des traiter et recommencer une fois que c'est fais.
    si quelqu'un a une idee ca serait genial

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 107
    Points : 122
    Points
    122
    Par défaut
    Tu as un thread qui se charge d'empiler les interruptions, et un autre qui dépile et fait le traitement désiré (en faisant cela tu "sérialises" ton traitement : il n'y aura que deux threads au plus).

    Mais es-tu sûr que ton PC peut gérer le nombre d'interruption ? (nombre d'interruption par seconde) Car même si le processeur pourrait suivre (en comptant grossièrement le nombre de cycles nécessaires à ton traitement), il ne faut pas oublier que ton OS a plein de chose à faire en même temps, qu'un port parallèle a ses limites, etc.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 17
    Points
    17
    Par défaut
    je continue a tester et les erreurs obtenue sont tres etranges.
    voici un peu plus de detail sur le probleme

    jai un event sur mon com1
    lorsque je recois des donnees je fais appelle a une fonction qui lit dans une table(access) les donnees recu pour afficher plus de detail sur les bit et mettre a jour la table.

    si je creer un bouttonX pour executer cette fonction tout fonctionne tres bien, les donnee saffiche et tout se met a jours.

    mais lorsque la fonction est appeller par le event . je recois toujours un message derreur sur les ligne form1->table->first(); ou next();

    la table est bien ouverte car je peux executer cette fonction a partir dun bouttonX click event.

    le message derreur est : access violation at adress xxxxx

    javoue que je suis depasse par se probleme...
    je ne vois pas pourquoi un event sur un bouton click fonctionne tres bien. mais lorsque cest une fuction multithreat les deplacment dans ma base de donnees sont imposible..

    merci beaucoup davoir pris le temps de repondre a mon premier message.
    en esperant avoir un autre reponse

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 17
    Points : 17
    Points
    17
    Par défaut exemple plus congret
    en esperant que quelqu'un peut maider.
    voici une bride du code qui pourra peut etre mieux vous expliquer


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void __fastcall TForm1::Button2click(tobject *sender)
    {
    test2();
    }
     
    case SERIAL_DATA_ARRIVAL :
         test2();
     
     
    void __fastcall test2(void)
    {
    form1->alcool->first;
    }
    alors si je click sur le button 2 tout se passe bien ..
    mais si mon case Serial_data_arrival arrive...
    test2 plante avec un eaccessviolation at adress ooooooc
    je ne voulais pas ecrire toute les etapes de mon programme mais le case fonctionne tres bien , il execute toute les tache que je lui m'entionne a l'exeption du deplacement dans mes tables ouvertent.
    merci d'avance eric

Discussions similaires

  1. Développement d'un stack overflow like, probleme ajax et jsp
    Par kenshiroseifu dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 06/05/2010, 12h27
  2. [GNU-Prolog][Mémoire] Local stack overflow
    Par Maxoo dans le forum Prolog
    Réponses: 15
    Dernier message: 04/06/2008, 23h15
  3. Stack OverFlow
    Par Goundy dans le forum Langage
    Réponses: 2
    Dernier message: 24/12/2005, 22h35
  4. Problème de stack overflow
    Par heider dans le forum Langage
    Réponses: 13
    Dernier message: 22/09/2005, 20h50
  5. Stack overflow
    Par portu dans le forum Langage
    Réponses: 3
    Dernier message: 26/11/2003, 16h16

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