Thread Multitasking mit Perl (7 answers)
Opened by blue-dev at 2008-03-22 17:50

ptk
 2008-03-23 20:01
#107406 #107406
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
sid burn+2008-03-23 02:21:08--
Threading:
Vorteile:
- Schneller und weniger Speicherverbrauch als Forking
In der Theorie sollte der Speicherverbrauch geringer sein. In der Praxis müssen bei Perl große Teile des Interpreters geclonet werden, so dasss ich den geringeren Speicherverbrauch nicht unterschreiben möchte.

Schneller: was meinst du damit genau? Meinst du, dass es schneller ist, einen neuen Thread zu erzeugen als zu forken? Bei früheren Experimenten mit perl5.8.x und FreeBSD habe ich den gegenteiligen Eindruck gewonnen (kann sein, dass es mit perl5.8.8 und moderneren FreeBSD-Versionen besser ist).

Außerdem muss man beachten, dass ein perl, bei dem Threads eingebaut sind, generell um einige Prozent langsamer ist als ein unthreaded perl. Auch wenn man gar keine Threads verwendet.

Quote
- Leichtere Kommunikation, und Datenaustausch da alle Threads auf die selben Daten zugreifen können.
Leider gibt es bei ernstzunehmenden Datenstrukturen (tiefe Datenstrukturen, Objekte) noch immer Probleme mit threads::shared.
Quote
Nachteile:
- komplexer in der Programmierung da durch den gemeinsamen Datenaustausch schwer zu findende Fehler auftreten können. Sogenannte Race Condition die von der Reihenfolge der Ausführung abhängt. Um diese art von Fehler zu vermeiden musst du den Zugriff auf Variablen/Ressourcen locken. Dieses entfällt bei Forking.
- Durch den ersten nachteil ist somit nicht jede Bibliothek ist Threadsicher. Bibliotheken müssen extra Programmiert werden damit sie Threadsicher sind. Auch dies entfällt bei Forking.
- In Perl ist Threadsupport so lala eingebaut. Zwar ist der neue Moderne Threadsupport besser als der alte, allerdiengs ist dieser immer noch anders als man es eigentlich von Threading erwartet.
Man muss auch beachten, dass nicht jedes vom Betriebssystem ausgelieferte perl Thread-Unterstützung haben muss.

View full thread Multitasking mit Perl