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

Modules Perl Discussion :

L'ordre d'exécution des threads


Sujet :

Modules Perl

  1. #1
    Membre du Club
    Inscrit en
    Avril 2004
    Messages
    106
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 106
    Points : 53
    Points
    53
    Par défaut L'ordre d'exécution des threads
    Bonjour,
    Je voudrais utiliser le module threads pour lancer 2 threads dans mon programme qui s'exécuteront simultanément. J'ai presque le résultat escompté: seulement dès que le délai d'exécution d'un thread se révèle plus court le second même sans finir son exécution s'arrête ainsi que tout le programme.
    Je voudrais savoir comment faire attendre l'exécution complète du deuxième thread ainsi que tout le programme. Merci
    Je compte sur vous les gars.

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Pour attendre l'exécution complète du seconde thread, utilise la méthode join() du module. Je te copie colle une partie de la doc perl pour plus d'explication :

    Citation Envoyé par doc perl
    Puisque les threads sont aussi des fonctions, elles peuvent renvoyer des valeurs. Pour attendre qu'un thread termine et utiliser les valeurs qu'il peut retourner, vous pouvez vous servir de la méthode join() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        use threads;
     
        $thr = threads->new(\&sub1);
     
        @DonneesRenvoyees = $thr->join;
        print "Le thread a renvoyé @DonneesRenvoyees";
     
        sub sub1 { return "Cinquante-six", "toto", 2; }
    Dans cet exemple, la méthode join() retourne dès que le thread se termine. En plus d'attendre qu'un thread termine et de rassembler les valeurs qu'il peut retourner, join() effectue aussi le nettoyage nécessaire. Ce nettoyage peut prendre des ressources importantes, particulièrement pour les programmes qui tournent longtemps et génèrent de nombreux threads. Si vous ne voulez pas récupérer les valeurs de retour ni attendre que le thread finisse, vous devriez plutôt appeler la méthode detach(), décrite ci-dessous.
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

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

Discussions similaires

  1. Ordre d'exécution des triggers AFTER
    Par pascal_T dans le forum Administration
    Réponses: 4
    Dernier message: 19/06/2009, 17h04
  2. Pb ordre d'exécution des procédures
    Par ogeiger dans le forum Windows Forms
    Réponses: 6
    Dernier message: 19/12/2008, 19h44
  3. [TestNG] Ordre d'exécution des tests
    Par crawling5 dans le forum Tests et Performance
    Réponses: 0
    Dernier message: 29/09/2008, 17h01
  4. [URL Rewriting] ordre d'exécution des règles
    Par safisafi dans le forum Apache
    Réponses: 1
    Dernier message: 21/11/2006, 18h52
  5. ordre d'exécution des événements onblur et onfocus
    Par letycaf dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 23/05/2006, 15h30

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