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

Threads & Processus C++ Discussion :

probleme pour activer mon thread


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Par défaut probleme pour activer mon thread
    Bonjour à tous,

    voila je souhaite qu'une méthode de mon instance de class A puisse se lancer via un thread, et que je puisse récupérer des informations de l'utilisateur via le main. J'ai donc fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    namespace test{
        class A{
            public:
                A(int m_var1, int m_var2) : m_var1(m_var1), m_var2(m_var2), t1(&A::direA, this)
                {
     
                }
                ~A()
                {
     
                }
     
                void direA()
                {
                    for(int i = 0; i < 10; i++)
                    {
                        std::cout << m_var2;
                    }
                }
            private:
                int m_var1;
                int m_var2;
                std::thread t1;
        };
     
    }
     
    int main()
    {
        int** tab2D = nullptr;
        test::A a(0,1);
     
        //création d'un tableau 2D en dynamique
     
        std::cout << "valeur de tab2D[9][9] : " << tab2D[9][9] << std::endl;
        std::cout << "valeur de tab2D[0][0] : " << tab2D[0][0] << std::endl;
     
        //delete le tableau 2D
     
        while(true)
        {
                //recupere de l'information via cin
        }
    }
    Le probleme est quand je lance mon programme j'ai sur mon terminal :
    valeur de tab2D[9][9] : 0
    valeur de tab2D[0][0] : 0
    et je ne vois aucune 1 apparaitre... pourtant l'appelle de mon constructeur appelle le thread et donc la boucle pour lancer le 1 dix fois

    Avez vous une idée du pourquoi ?

    Merci d'avance

    PS : dsl pour l'affichage du code mais je ne vois aucune balise code

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 146
    Billets dans le blog
    4
    Par défaut
    Où se trouve la création du tableau ?
    Où se trouve le remplissage du tableau ?
    "en attente de cin" je suppose que c'est un truc du genre getline ou autre qui bloque le terminal ? S'il est bloqué tu auras bien du mal à voir ce qui s'écrit dessus.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Par défaut
    je n'ai pas mis la création du tableau pour éviter d'alourdir la lecture du code pour vous mais ca donne ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        tab2D = new int* [10];
        for(int i = 0; i < 10; i++)
        {
            tab2D[i] = new int[10];
        }
     
        for(int i = 0; i < 10; i++)
        {
            for(int j = 0; j < 10; j++)
            {
                tab2D[j][i] = 0;
            }
        }
    La boucle est vide pour l'instant, je fais déja un test comme ca pour voir si tout marche correctement mais non ...

  4. #4
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                void direA()
                {
                    for(int i = 0; i < 10; i++)
                    {
                        std::cout << m_var2;
                    }
                }
    Ca donne quoi si tu rajoutes un petit << std::endl ?

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 146
    Billets dans le blog
    4
    Par défaut
    Je maintiens que tu ne vois rien parce que la console est bloquée sur ton attente sur cin.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre très actif
    Homme Profil pro
    Inscrit en
    Août 2013
    Messages
    274
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 274
    Par défaut
    La boucle while est vide il n'y a rien dedans meme pas un std::cin

    Le std::endl; fonctionne mais je ne sais absolument pas pourquoi l'objet endl est necessaire ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Thread] Probleme pour arreter des threads
    Par Djobird dans le forum Concurrence et multi-thread
    Réponses: 4
    Dernier message: 15/02/2008, 21h31
  2. Réponses: 1
    Dernier message: 14/11/2007, 13h11
  3. probleme pour récupérer mon JavaCompiler
    Par Kuroro dans le forum Langage
    Réponses: 1
    Dernier message: 19/05/2007, 18h37
  4. double clic pour activer mon SWF sous IE
    Par raldine dans le forum Flash
    Réponses: 1
    Dernier message: 15/02/2007, 13h26
  5. Réponses: 2
    Dernier message: 22/04/2004, 13h28

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