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 :

partager un PTK Mainwindow entre thread ?


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut partager un PTK Mainwindow entre thread ?
    Salut ,

    voici le probléme que je recontre :
    je voudrais créer une interface en perl TK qui sera partagé entre plusieurs thread.
    Exple : un thread qui fait un ping continue , une fois il y reponse il affiche un Label dans le Mainwindow .

    Je ne sais pas si c possible ou pas ?
    #########################################
    use Tk;
    use threads;
    use threads::shared;

    my $main : shared ;
    $main = &share(MainWindow->new()) ;

    $main->title("Application TEST");

    $thr_ping = threads->new( \&isAlive, '192.168.1.1');

    MainLoop;



    sub isAlive() {
    my ($host) = shift;

    $ping = Net:ing->new("icmp");
    while (1) {
    if ( $ping->ping( $host, 2 ) ) {

    $ping->close();
    $host_pinged = 1;
    $main->Label(-text=>'HOST is Found ')->pack() ;

    return 1;
    }
    }

    }
    ##########################################

    Voila merci pour votre aide.

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Ce n'est pas possible, d'une part on ne peut pas partager un objet en Perl, d'autre part Tk n'est pas prévu pour du multithread. Par contre tu peux tout à fait utiliser Tk et les threads, tant que tu maintiens Tk dans un seul thread. Dans ton cas, tu n'as qu'à partager le contenu d'un scalaire et mettre à jour régulièrement dans le thread où se trouve Tk, avec repeat() :
    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
    #!/usr/bin/perl
    use strict;
    use warnings;
     
    use threads;
    use threads::shared;
    use Tk;
     
    my $mw = MainWindow->new();
     
    my $lab = $mw->Label(-text => "Wait..");
    $lab->pack();
     
    my $change : shared = 0;
     
    my $update = threads->new( sub { for(;;) { sleep 2; $change++ } } );
     
    $mw->repeat( 1000, sub { $lab->configure(-text => $change) } );
     
    MainLoop();
     
    __END__
    --
    Jedaï

  3. #3
    Futur Membre du Club
    Inscrit en
    Février 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    salut,
    Merci pour la reponse , finalement je pense que je devrais chercher une autre solution autre que pTK , car dans mon programme je fais appel à plusieurs sessions Telnet, ping,snmp, ce qui bloque l'interface pour un bon moment pour cela j'ai voulu tester avec les thread . malgrés que la solution que t'as proposée peut resoudre le probleme mais ça va etre dure de tracker les scalar pour chaque appel thread ensuite recuperer le resultat et l'afficher par la suite .


    Encore une fois merci.

Discussions similaires

  1. Partager des variables entre Threads
    Par ToTo13 dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 01/04/2010, 16h09
  2. partage de variables globlales entre threads
    Par ikuzar dans le forum Débuter
    Réponses: 7
    Dernier message: 02/09/2009, 15h43
  3. partage d'une variable entre plusieurs threads
    Par baedal dans le forum Entrée/Sortie
    Réponses: 5
    Dernier message: 27/02/2008, 20h33
  4. Partager boolean entre Threads
    Par Flipper_fk dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 26/04/2007, 13h51
  5. [WinForms]Comment partager des objets entre threads ?
    Par AiSpirit dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 16/08/2006, 08h57

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