FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Perl Threads wollen nicht sterben ...

Perl Threads wollen nicht sterben ... 2003-05-18 21:23
Hamster
Ich habe da ein kleines Problem: Ich erstelle Haufenweise Threads und merke das mein RAM in kurzer Zeit dahinschwindet. Habe die Module Thread.pm und threads.pm ausprobiert unter Windows und unter Linux. Immer das gleiche, immer wenn ein Thread geöffnet wird verschwindet RAM wenn er fertig ist wird nix freigegeben. Vielleicht kennt sich ja hier einer mit Perl-Threads aus und kann mir helfen ;D

Der Hamster

Re: Perl Threads wollen nicht sterben ... 2003-05-19 02:23
MoKrates
Ich kann zwar kein perl, aber Sourcen waeren doch nett…

MoKrates

Re: Perl Threads wollen nicht sterben ... 2003-05-19 09:19
jr
Was willst du denn machen? In den meisten Faellen reicht auch schlichtes forken. Das ist zwar etwas langsamer aber auch wesentlich einfacher zu handhaben.

/jr



Re: Perl Threads wollen nicht sterben ... 2003-05-26 03:36
Hamster
Also 1. soll es auf einem kleinen Server laufen (da wäre forken dann doch ein wenig speicherfressender wenn ich mich nicht irre) und 2.wollte ich sowieso mal gucken wie das mit Threads unter Perl funzt ! Aber funzt leider nicht…
Die Threads verbrauchen pro Aufruf ihren Speicher, der erst nach Beendigung des Perl-Programms wieder freigegeben wird :(

Re: Perl Threads wollen nicht sterben ... 2003-05-26 08:47
Popcorn
In den meisten Faellen reicht auch schlichtes forken.
Die kostet vielleicht nur zwei rote Mana, aber ist dafür wirklich ne teure Rare. Weiß nicht, ob das unbedingt zumutbar ist. Aber schön, dass es da draussen noch MTG'ler gibt. %) SCNR

Re: Perl Threads wollen nicht sterben ... 2003-05-26 09:23
jr
Du solltest mindestens Perl 5.8.0 verwenden, denn in 5.6.0 sind threads noch experimentell und ist ist allgemein bekannt das leaks die Folge sind. Aber auch in 5.8.0 wuerde ich die Finger von lassen (threading Modell sowohl von 5005threads als auch ithreads gefaellt mir persoenlich nicht)…

Was das forken angeht. Sicherlich es frisst etwas mehr Speicher und ist bei der Erzeugung etwas langsamer, aber ein Apache schafft es damit mehrere 100 Requests pro Sekunde zu beantworten (wenn IO schnell genug ist) also duerfte das fuer deine Zwecke bestimmt mehr als ausreichend sein einfach zu forken.

Da du dich fuer Perl entschieden hast schliesse ich darauf, dass du eine schnelle Loesung brauchst, aber auch in Perl ist Multithreading nicht gerade trivial und endet bei schnell bei dutzenden Deadlocks und Leaks wenn man die Sache nicht ordentlich angeht.

Wenn es immer noch threads sein sollen solltest du dich mal an Python versuchen.

/jr

Re: Perl Threads wollen nicht sterben ... 2003-05-29 16:43
Anonymer User
Ich habe es doch schon fertig geschrieben ! Ja mit threads *grins*. Hat zwar etwas gedauert, aber egal. So nu hätt ich aber nochmal wieder ne Frage gibts bei threads (nicht Thread) ne Möglichkeit Daten in einer Subroutine so zu deklarieren das sie in von der Subroutine aufgerufenen Subroutinen auch sichtbar sind, aber trotzdem "thread-safe" sind ? Angeblich sollen ja einige Variablen bei local diese Eigenschaft haben ! Aber da ich mich da nicht so genau mit auskenne mach ich das zur Zeit derbe umständlich mit "durchreichen" (bei vielen Parametern wird das Übergeben der Varialben aber immer nerviger) :(