Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Perl, Threads und die Varibalen in Threads

  1. #1
    Registrierter Benutzer
    Registriert seit
    29.05.2002
    Ort
    Potsdam
    Beiträge
    14

    Perl, Threads und die Varibalen in Threads

    Hi,

    ich möchte einen JabberClient und einen XML RPC Service innerhalb eines Scriptes machen.

    da ich beides nur mit threads (forks will ich nicht) machen konnte - hab ich das gemacht und es funktioniert auch.

    jetzt hab ich aber das problem, das ich für jeden service einen thread aufmache.

    und nun möchte ich, das wenn jmd. bestimme sachen über die xml rpc schickt, das ich dann in jabber eine nachricht bekomme.

    meine frage nun.

    wie kann ich auf die variablen in einem thread zugreifen ?

    ich hab es schon mit shm (shared memory) probier, klappt aber nicht.

    ich muss nur an da object aus dem thread 1 kommen und dort die function send() aufrufen können.

    vielen dank.

    marcel

  2. #2
    Registrierter Benutzer
    Registriert seit
    15.04.2005
    Beiträge
    105
    Hallo,

    das was du da machen willst trägt den schönen Namen Interprozessskommunikation. Dies kann man auf verschiedene Arten erledigen

    http://www.google.at/search?hl=de&hs...kation&spell=1
    bietet sicher genügend brauchbare ergebnisse.

    ich denke dass im openbook unixprogrammierung von www.pronix.de genügend brauchbare hinweise stehen, habe es allerdings noch nicht selbst gelesen.
    http://www.pronix.de/pronix-23.html

    mfg martin
    Zitat Zitat von elrond
    Das problem ist der grosse Vorteil von php: die leichte erlernbarkeit. Es ist wie bei windows: CD rein und geht...aber eben nur ein bischen ;)

  3. #3
    Registrierter Benutzer
    Registriert seit
    29.05.2002
    Ort
    Potsdam
    Beiträge
    14
    ich hab mal einen code vorbereitet um zu demonstieren, was ich genau will.

    ich will jetzt von einem anderen thread aus auf die methode "foo" von $t zureifen.

    Code:
    #!/bin/perl -w
    use strict;
    use threads qw/yield/;
    use Data::Dumper;
    
    package Foo;
    
    sub new {
         my($class) = @_;
         bless {}, $class;
    }
    
    sub foo {
         print "foo!\n";
    }
    
    package main;
    
    my $t;
    
    sub th1 {
      $t = Foo->new();
    }
    
    sub th2 {
      print $t->foo();
    }
    
    #use Test::More tests => 1;
    
    my $th_1 = threads->new(\&th1);
    
    my $th_2 = threads->new(\&th2);
    
    $th_1->join();
    $th_2->join();

  4. #4
    Registrierter Benutzer
    Registriert seit
    15.04.2005
    Beiträge
    105
    <mal vorweg>
    Ich hab noch nie etwas mit threads gemacht, kann mir aber NICHT vorstellen, dass man hier nur über variablenbasis etwas übergeben kann </mal vorweg>

    ja, und wo ist das problem?
    du musst irgendeine art von kommunikationsverbindung dafür schaffen. ich würde hierfür wahrscheinlich unixdomainsockets verwenden.

    mfg martin
    Zitat Zitat von elrond
    Das problem ist der grosse Vorteil von php: die leichte erlernbarkeit. Es ist wie bei windows: CD rein und geht...aber eben nur ein bischen ;)

  5. #5
    Registrierter Benutzer
    Registriert seit
    05.02.2006
    Beiträge
    116
    schau Dir mal
    use threads::shared
    an...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •