Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]9015[/thread]

Prozesskommunikation



<< >> 9 Einträge, 1 Seite
MickiM2000
 2007-05-17 11:38
#76742 #76742
User since
2007-04-19
4 Artikel
BenutzerIn
[default_avatar]
Hallo,

ich entwickle derzeit eine Applikation mit perl objektorientiert.
Ich habe einen Prozess, der mittels fork() weitere Kindprozesse erzeugt. Nun sollen alle Kindprozesse auf ein zentrales Objekt zugreifen, das noch weitere Unterobjekte enthält. In den Kindprozessen möchte ich dann beispielsweise die Attribute über die Methoden verändern. Beim fork() übernehmen die Kindprozesse den derzeitigen Stand des Vaterprozesses. Die reicht aber in meinem Fall nicht aus, da alle Kindprozesse die Veränderungen an dem Objekt auch nach dem fork() bekommen sollen.

Welche Lösung könnte ihr mir hierfür vorschlagen!

Einen schönen Vatertag an alle Väter :-)
MickiM2000
PerlProfi
 2007-05-17 12:02
#76743 #76743
User since
2006-11-29
340 Artikel
BenutzerIn
[default_avatar]
Wie wäre es denn dann mit threads ?
Dann kannst du dein Objekt unter allen threads teilen.

MfG
weismat
 2007-05-17 14:31
#76744 #76744
User since
2003-08-18
142 Artikel
BenutzerIn
[default_avatar]
Leider ist das nicht so einfach mit dem Sharen von Objekten über Threads.
Das Perl Thread-Modell unterstützt leider nur das Sharen von Skalaren, Arrays, Handles and Hashes - leider keine Referenzen. Ergo sollte es wahrscheinlich Probleme geben, wenn Deine Objekte (höchstwahrscheinlich) mit Referenzen arbeiten. Dann müssen die Daten serialisiert werden und dass kostet wieder einiges an Performance.
CPAN:Serialize data structures between Threads
MickiM2000
 2007-05-17 14:45
#76745 #76745
User since
2007-04-19
4 Artikel
BenutzerIn
[default_avatar]
Bin leider gezwungen, mit Perl 5.6 zu arbeiten :-( Soweit ich weiß, sind dort threads noch experimentell.
jan
 2007-05-17 14:57
#76746 #76746
User since
2003-08-04
2536 Artikel
ModeratorIn
[Homepage] [default_avatar]
brauchst du denn "echtes" multi-prozessing/multi-threading? ich mein, vielleicht reicht auch POE, damit wär's leicht.
Gast Gast
 2007-05-18 11:49
#76747 #76747
Hast Du da vielleicht ein Minimalbeispiel mit der Verwendung von POE, das dann auch objektorientiert arbeitet?
MickiM2000
 2007-05-23 23:24
#76748 #76748
User since
2007-04-19
4 Artikel
BenutzerIn
[default_avatar]
Ich habe nun mal das Modul CPAN:IPC::Shareable verwendet und habe hierbei zwischen zwei Prozessen einen Hash verwendet. Hier liegt leider das Problem, das die SharedMemory-Größe für den Hash, der bei mir einige 1000 Einträge beinhaltet nicht ausreicht.

Wäre da eventuell ein Austausch über eine Datei besser?Welches Modul unterstützt einen kontrollierten Austausch von Objektdaten zwischen Prozessen über Dateien?\n\n

<!--EDIT|MickiM2000|1179949158-->
ptk
 2007-05-24 10:01
#76749 #76749
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Vielleicht hast du mit memcache mehr Erfolg?
bloonix
 2007-05-24 19:15
#76750 #76750
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Kann CPAN:POE sowas nicht?
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< >> 9 Einträge, 1 Seite



View all threads created 2007-05-17 11:38.