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

Langage Perl Discussion :

treads / proccesus


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Points : 56
    Points
    56
    Par défaut threads / processus
    Bonjour,

    J'ai un script qui exécute une action, par exemple une fonction, pendant ce temps j'ai envie de récupérer des données que l'utilisateur entre via <stdin>.
    J'ai envie de réaliser cela dans le même temps, pas l'un après l'autre.
    Pour cela je dois utiliser les threads, forks ?

    Comment faire pour implémenter cela ?

    Aussi par exemple j'ai envie d'ouvrir 5 processus qui exécute une fonction, en même temps, comment faire cela ?

    Merci pour vos réponses, si vous avez des documents à lire je suis preneur

    (Edit : correction de quelques fautes d'orthographes, surtout dans le titre, ça fait pas sérieux )

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

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    le mieux pour ce genre de chose est d'uitliser des threads (et non pas fork, pusique tu veux pouvoir communiquer facilement entre tes threads).
    Helas la gestion des thread en perl n'est pas tres evoluée (et pas tres stable). Voici cependant deux articles de perl.com qui devraient t'aider:
    http://www.google.fr/search?hl=fr&q=...chercher&meta=

    Si tu es sous linux tu peux utiliser le modules forks() pour gagner un peu en stabilité et en memoire avec les threads (au detriment d'un peu de vitesse)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  3. #3
    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
    De toute façon, si tu n'es pas sous Linux, tu ne peux pas utiliser les threads je crois bien... Ou en tout cas vaudrait mieux pas.

    Pour ce que tu veux faire, je te conseillerais d'utiliser le principe de solicoque (un open avec |-) qui semblerait assez adapté je pense
    "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.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 427
    Points : 459
    Points
    459
    Par défaut
    les threads sont utilisables sous windows (c'est d'ailleurs ce qui sert à emuler la fonction fork() sous windows depuis perl 5.6)
    Recherche staigiaire(s) motivé(s) sur projet perl/reseau a grande echelle. Me contacter par mp.

  5. #5
    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
    Citation Envoyé par pospos
    les threads sont utilisables sous windows (c'est d'ailleurs ce qui sert à emuler la fonction fork() sous windows depuis perl 5.6)
    Oups, oui, c'est vrai pour les ithreads, mais pas pour les threads 5.005 me semble-t-il... Mais de toute façon ces derniers sont obsolètes. J'avai fait une chtite confusion, désolé
    "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.

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Points : 56
    Points
    56
    Par défaut
    Merci pour les links pospos je vais regarder.

    De toute façon, si tu n'es pas sous Linux, tu ne peux pas utiliser les threads je crois bien... Ou en tout cas vaudrait mieux pas.

    Pour ce que tu veux faire, je te conseillerais d'utiliser le principe de solicoque (un open avec |-) qui semblerait assez adapté je pense

    Je suis sous LInux

    Pourriez vous me montrer un ptit exemple de code qui lance 2 processus simple en parralèle ?

    Merci

  7. #7
    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
    Bon, je peux toujours me rattraper sur cette question

    Alors, je vais te donner un code qui lance deux processus léger (ou threads) et un autre qui lance deux processus tout court

    Commençons par les processus. Ce code va lancer un processus qui exécutera des instructions (je vais simuler ceci par un sleep) pendant que l'autre saisira des données au clavier. Ensuite, le premier processus récupérera les données entrée au clavier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if (open(FILS, "-|"))
    {
    	#processus père
    	sleep(5); #simule le travail du père
    	my $var_recup = <FILS>; #récupère les données du fils
    	print $var_recup;
    }
    else
    {
    	#processus fils
    	chomp(my $var = <STDIN>);
    	print $var; #STDOUT est redirigé vers le handle FILS du processus père
    }
    Et avec des threads :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    use threads;
     
    my $Param3 = "toto";
    my @ListeDeParametres = ("ele1","ele2","ele3");
    my $thr = threads->new(\&sub1, "Param 1", "Param 2", $Param3);
    $thr = threads->new(\&sub1, @ListeDeParametres);
    $thr = threads->new(\&sub1, qw(Param1 Param2 Param3));
    sub sub1 
    {
    	my @Parametres = @_;
        print "Dans le thread\n";
        print "Reçu les paramètres >", join("<>", @Parametres), "<\n";
    }
    Allez, j'avoue, j'ai pris un code de cet excellent tuto.
    Mais ça marche très bien sous Windows
    "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.

  8. #8
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Points : 56
    Points
    56
    Par défaut
    Merci bcp pour ton aide Woufeil, je vais creuser toutes ces précieuses informations

Discussions similaires

  1. Les Treads sous Delphi ?
    Par abdessami3e dans le forum Delphi
    Réponses: 2
    Dernier message: 16/07/2006, 22h27
  2. debugger Treads avec Eclipse
    Par mika95013 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/07/2006, 14h31
  3. [debutant]comment connaitre le temp de vie d'un tread?
    Par gillou13 dans le forum Langage
    Réponses: 2
    Dernier message: 15/06/2006, 21h57
  4. Proccesus inconnus
    Par Guesh13 dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 24/01/2006, 22h59
  5. VCL et Treads
    Par say dans le forum C++Builder
    Réponses: 7
    Dernier message: 17/05/2005, 15h10

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