[Vienna-pm] hash in shared memory?

peter pilsl pilsl at goldfisch.at
Wed May 19 12:15:14 CDT 2004


linux unterstützt mit IPC unter anderem shared memory, semaphoren u
sysmessages und das ist genau das was du benötigst.

auf cpan findest du viele IPC-module mit sehr unterschiedlichen
Leistungen.  IPC::Shareable, IPC::ShareLite, IPC::SysV usw.
Die meisten (alle?) basieren auf IPC::SysV.

manche erlauben das direkte Tie von Variablen auf den shared memory und
komplexe locks.

Für mich waren im Endeffekt alle diese einfachen Varianten viel zu
langsam und ich benutze IPC::ShareLite und das Storable-modul, das mit
freeze und thaw Methoden zur verfügung stellt, die einen Hash in einen
string und vice versa abbildet.

shared memory ist ein sehr mächtiges Werkzeug, aber du musst halt gut
überlegen, wer den Speicher nachher wieder freigibt, wer gerade darauf
schreiben darf usw. usf.

wenn du shm wirklich nur benötigst, um Daten unidirektional von einem
Prozess zum anderen zu schicken, würde ich es mit Pipes oder so versuchen.

erster Einstieg für alle diese Dinge ist auf jeden Fall:
man perlipc

viel spass,
peter

ps: unter linux kannst du mit ipcs und ipcrm den sharedmem beobachten
und die segmente "manuell" löschen. Kann recht hilfreich sein ;)


Josef Bergmann wrote:
> Hi!
> 
> Ich möchte das zwei Linux-Programme auf gemeinsame Daten zugreifen. Konkret, 
> ein Programm sammelt Informationen aus Netzwerkverbindungen und legt diese 
> (z.Z.) in Hashes ab. Nun soll ein anderer Prozess diese Daten periodisch 
> auslesen und in einer Datenbank ablegt.
> 
> Die beiden Teilproblem habe ich ja gelöst, nur wie/wo lege ich die 
> Daten/Hashes ab damit der zweite Prozess darauf zugreifen kann. Gibt es so 
> eine Art Shared-Memory-Modul?
> 
> bye Josef





More information about the Vienna-pm mailing list