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 :

[MT] Instance et Thread


Sujet :

Threads & Processus C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut [MT] Instance et Thread
    Bonjour,

    Je suis en train de développer un soft assez complexe. J'avais commencé en java mais je me suis aperçu qu'au bout d'un moment le java risque de me causer des problemes.

    J'ai donc "traduit" mon code java en C++ mais je me heurte à un problème.

    J'ai donc le programme main qui initialise une instance.

    Dans l'initialisation de cette instance je créais au bout d'un moment un Thread qui devrait tourner en parallèle avec le processus principal. Or Dans ce thread j'ai besoin de récuperer cette instance.

    Et je m'aperçois qu'en fait il créer une instance pour chaque Thread donc en conclusion j'ai une création de thread à l'infini.

    J'aimerai pouvoir savoir s'il est possible de récuperer une instance du thread principal sur l'un de ses fils. Merci de votre réponse.

    Pour info mon instance j'utilise le concept de Singleton
    et pour creer le Thread j'utilise la fonction createthread où je mets en argument mon instance.

    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Points : 1 053
    Points
    1 053
    Par défaut
    Je parie qu'au lancement de ton thread tu reçois un copie de ton objet mais comme le constructeur de ton objet lance un thread ben fatalement...
    Si c'est ça, faudra bosser un peu plus le C++
    Sérieusement, bien que tu aies eu l'excellente idée de ne pas divulger l'api que tu utilises pour les threads, elles fonctionnent toutes pratiquement de la même façon: elles appelent une fonction en lui passant un pointeur. Fais en sorte de passer un pointeur sur ton objet de départ et c'est bon.

  3. #3
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    J'avais eu ce problème il me semble.

    le code devait ressembler à ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    truc& truc::getInstance()
    {
      static truc t;
      return t;
    }
    recréait une instance du singleton dans chaque thread qui l'appellait...

    N'étant pas à la base un fan des singletons j'avais simplement fait passé ses méthodes et attributs membres en static et caché totalement les constructeurs. Voilà.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par zais_ethael
    Fais en sorte de passer un pointeur sur ton objet de départ et c'est bon.
    C'est ce que je fais déjà

    Ben en gros c'est au moment ou je déclare

    Maclass* maclass = (Maclass *) leparamemetre; qu'il relance le constructeur

    sachant que leparamaetre a la base c'est un pointeur sur mon instance mais caster en LPVOID (ca donne ((LPVOID)Maclass::getInstance() ) pour les besoin de ma fonction de creation de thread.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 8
    Points : 4
    Points
    4
    Par défaut
    Désolé pour le double post,
    j'ai réussi à règler mon problème du singleton en l'initialisation correctement au début.

    Parcontre lorsque je veux accéder à un champs de mon instance j'ai une violation d'acces ...

    Merci de votre aide

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Donne un peu de code de ton singleton...

Discussions similaires

  1. Problème thread pointeur non instancié
    Par Hurin dans le forum C#
    Réponses: 9
    Dernier message: 17/09/2007, 22h33
  2. Pb ouverture instance Excel Thread
    Par Mamat31 dans le forum C++Builder
    Réponses: 1
    Dernier message: 11/06/2007, 21h44
  3. plusieurs instance de classe avec thread
    Par lucky dans le forum MFC
    Réponses: 2
    Dernier message: 14/09/2006, 11h30
  4. [Thread] Exécuter la même instance plusieurs fois
    Par Nairolf7 dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 21/04/2006, 22h07
  5. Suite Thread Simultanés: instances de classe differentes?
    Par macgile dans le forum Framework .NET
    Réponses: 3
    Dernier message: 04/01/2006, 09h50

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