Thread fork kindprozess überwachen (12 answers)
Opened by Jansen at 2009-08-20 10:31

nichtdort
 2010-10-23 20:39
#142138 #142138
User since
2009-08-20
16 Artikel
BenutzerIn
[default_avatar]
2009-08-20T13:58:59 sid burn
Möchtest du aber das Parent und Child sich Variablen teilen (sharen) dann musst du Threads nutzen.

Eventuell wäre das Modul CPAN:forks auch hilfreich oder wenn nur Forks benutzt werden würde ich eher zu CPAN:Parallel-ForkManager raten, wo man dann auch eingeschränkt Daten senden kann bei der Rückgabe an den Hauptprozess.

Forks kann man vorallem z.B. bei Hostern wie Domainfactory (only perl without threads) einsetzen falls man mal ein Script mit Threads mit shared hat. Forks funktioniert unter Windows übrigens nicht wirklich.

2009-08-20T13:58:59 sid burn
Coro habe ich selber noch nicht genutzt, werde ich aber definitiv auch mal bald genauer anschauen. Vorallem in verbindung mit AnyEvent: Coro::AnyEvent

Ich würde auch eher zu Coro als zu Forks oder Threads raten.

Beispiel mit LWP und Coro:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/perl
use Coro::LWP;
use Coro;
use Coro::AnyEvent;
use Coro::Timer qw(sleep timeout);
use LWP::Simple;
$|++;

my @pids;

for (1..1) {
push @pid, async {
print "starting to fetch http://www.google.de/\n";
get "http://www.google.de/";
print "fetched http://www.google.de/\n";
};

push @pid, async {
print "starting to fetch http://www.yahoo.com/\n";
get "http://www.yahoo.com/";
print "fetched http://www.yahoo.com/\n";
};
}
$_->join for @pid;


Leider ist die Dokumentation bei Coro für Anfänger eher ungeeignet auch wenig Beispiele und Tests. Wenn es z.B. nur um Webseitenabrufe ginge wäre CPAN:WWW-Curl eventuell eine Alternative. Auch einige Fallstricke wie sleep wäre ohne Coro::Timer ein globaler Block.

Bin gerade mit Coro am rumspielen unter Windows und werd mal schauen wie es sich mit anderen Modulen und Software verhält. Über Erfahrungen mit Coro würde ich mich freuen damit ich nicht ständig in Fallen renne um einen Block auszulösen.

View full thread fork kindprozess überwachen