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 :

Création d'objets dans un thread


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut Création d'objets dans un thread
    Bonjour a tous,

    voila je voudrais savoir si lors de la création d'un thread dans sa méthode execute, on pouvait créee un objet.
    Je fais cela afin d'améliorer la vitesse d'execution d'un ancien prog.

    Merci

  2. #2
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Salut,

    on ne va pas pouvoir te répondre car on ne sait pas quelle bibliothèque tu utilises et sur quelle os tu es.

    Si tu peux en profiter pour nous mettre un exemple (qui ne compile pas forcément) pour illustrer ce que tu veux faire, ça serait bien .

  3. #3
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut
    J'utilise la classe TThread
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class TMyThread : public TThread
    {            
    private:
            AnsiString Val;
    protected:
            void __fastcall Execute();
            void __fastcall Affichage();
    public:
            __fastcall TMyThread(AnsiString);
    };
    J'éssai de scanner un reseau et je voudrais crée un thread pour chaque Ip

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    AnsiString DebIp = "192.168.2." ;
           for(int i = 1; i<=255; i++)
           {
                    AnsiString Ipbis = DebIp + i;
     
                    myThread = new TMyThread(Ipbis);
           }
           Form1->Memo1->Lines->Add("fin");

  4. #4
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Je ne vois pas toujours pas le problème. Je ne connais pas AnsiString et les directives __fastcall donc mon jugement sera peut être compromis.

    Néanmoins je ne vois pas qu'est-ce qui t'empêche de créer un objet dans la méthode Execute ?

    De plus, si on regarde ta boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(int i = 1; i<=255; i++)
           {
                    AnsiString Ipbis = DebIp + i;
     
                    myThread = new TMyThread(Ipbis);
           }
    Il y a de grosses fuites mémoire ... Création de 255 threads mais libération (supposée) que du dernier... En plus je ne sais pas comment tu vas lancer ta méthode execute sur chacun des threads après. Tu peux toujours faire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(int i = 1; i<=255; i++)
           {
              TMyThread(DebIp + i).execute();
           }
    Ou alors stocker les threads dans un tableau si tu en as encore besoin plus tard.

    Finalement, il n'est pas d'usage (ni en C++, ni ailleurs à ce que je sache) de mettre une majuscule au nom de méthode

    HTH

  5. #5
    Membre confirmé
    Homme Profil pro
    Developpeur
    Inscrit en
    Mars 2012
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Developpeur
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2012
    Messages : 146
    Par défaut
    Tu dis que je peux stocker les Threads dans un tableau ? Cela m'interresse car effectivement j'aurais besoin de les réutiliser plus tards.

    Cela ce comporte comme un tableau de chaine caractère ?
    Comment cela passe t-il au niveau de l'execution? Si je lance une méthode sur un thread de mon tableau, peut t-il l'executer sur tout les thread en meme temps, ou doit -il les reprendre un a un ?

  6. #6
    Membre Expert Avatar de Trademark
    Profil pro
    Inscrit en
    Février 2009
    Messages
    762
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 762
    Par défaut
    Hmmm, je te conseille de prendre un livre sur le C++ parce que je ne sais pas comment tu vas t'en sortir pour faire des choses assez compliquées (manipuler des threads n'est pas trivial) en ayant si peu de connaissances...

    Sinon tu peux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::vector<TMyThread> threadPool;
    for(int i=1; i <= 255; ++i)
      threadPool.push_back(TMyThread(DebIp + i));
    Tu dois les parcourir un par un pour lancer la méthode sur chacun d'eux, après il existe d'autre technique qu'une boucle for, peut-être plus élégante, mais je pense que tu peux t'en passer.

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

Discussions similaires

  1. Création d'objet dans endCreation
    Par Toph1 dans le forum W4 Express
    Réponses: 2
    Dernier message: 06/02/2009, 15h31
  2. [6.1a] Création d'objets dans 1 rapport en réseau
    Par lenka33 dans le forum Débuter
    Réponses: 2
    Dernier message: 24/08/2008, 23h06
  3. Création d'objet dans des fonctions
    Par fafabzh6 dans le forum R
    Réponses: 5
    Dernier message: 22/07/2008, 14h30
  4. Création d'objets dans une boucle for
    Par urban_p dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/06/2008, 10h34
  5. [BO 5.1.6 i] Création d'objet dans l'univers
    Par julien2602 dans le forum Designer
    Réponses: 20
    Dernier message: 08/01/2008, 14h15

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