Unterstützung paralleler Klienten-Zugriffe

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

*Das vorgestellte einfache Schema für einen Netzdienst in Perl läßt sich leider nicht ohne weiteres in den allgemeinen Fall überführen, bei dem wir beliebig viele Klienten parallel betreuen.
 
*Das Problem liegt darin, daß alle anderen Dialoge ``hängen'', wenn bei einem einzigen Klienten auf Eingabe oder die Möglichkeit, Rückmeldungen loszuwerden, gewartet wird.
 
*Zu diesem Problem gibt es bei Perl folgende Lösungen:

*Für jeden Klienten wird ein neuer Prozeß gestartet. Nachteile: Nicht sehr effizient und Datenaustausch zwischen dem Hauptprozeß und den einzelnen Klienten-Prozessen ist nicht mehr trivial.
 
*Grundsätzlich werden alle Systemaufrufe vermieden, die den Prozeß blockieren könnten. Ähnlich wie bei Tk gibt es dann eine zentrale Ereignis-Schleife, die für jedes Ereignis (z.B. ``es gibt etwas von einem bestimmten Klienten zu lesen'') einen zugehörigen Bearbeiter aufruft. Nachteile: Umständlicher Programmierstil und in Kombination mit bestimmten Bibliotheken (z.B. DBI/MySQL) nicht machbar.
 
*Modernere UNIX-Versionen bieten Multi-Threading, d.h. mehrere parallel laufende Threads teilen sich einen Adreßraum. Nachteile: Unterstützung dafür bislang bei Perl nur experimentell und jede Menge Code ist noch nicht MT-safe.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000