Thread Storable->retrieve parallel aus einem weiteren Programm?
(12 answers)
Opened by toby at 2009-09-30 15:28
Hi,
Quote Ich arbeite nur unter Unix (HP-UX). Mein erster Gedanke war aus B.pl mir die Datei wegzukopieren und dann die Kopie auszulesen und anschliessend wegzuschmeissen. Dies ist zwar sicher, erschien mir aber zu umständlich und wollte wissen, ob es direkt mit Perl-Board-Mitteln geht. Quote Das eine Programm A.pl (daemon) schreibt kontinuierlich, aber ungegelmäßig rein. Das andere, parallele Programm B.pl liest die Datei nur ab und zu aus, um den aktuellen Zustand für andere Zwecke auszuwerten. Meine angedachte Vorgehensweise nach Tipps von pq war lock_nstore() beim A.pl und lock_retrieve() bei B.pl. Da ich mich aber mit dem Lock- und Store-Verhalten bei unabhängigen, parallelen Zugriffen nicht auskenne habe ich nun doch noch folgende Sorgen: Was macht A.pl, wenn es schreiben möchte und die Datei gerade vom B.pl für Lesen ge'lock'ed ist? Der deamon (A.pl) darf nie Probleme haben über die Datei zu verfügen, wogegen bei B.pl nicht so ganz wichtig ist, wenn er Probleme beim Lesen bekommt. Natürlich wäre es am schönsten, wenn weder A.pl noch B.pl Probleme bekommen. Da ich aber nicht weiss, wie sich gleichzeitiges lock_retrieve() vom B.pl und lock_nstore() vom A.pl verhält, ist mein aktueller Plan lock_nstore() bei A.pl und normales retrieve() bei B.pl mit der Gefahr, dass B.pl evtl. zerschnittene Daten erhält. Was meint ihr darüber? => Wenn A.pl mit lock_nstore() wartet, bis lock_retrieve() von B.pl fertig ist, wäre alles OK, wie läuft es aber tatsächlich ab? Wie gesagt, das Wichtigste ist, dass A.pl problemlos reinschreiben darf! Danke und viele Grüße! :) Toby PS: lock_store(), oder lock_nstore() ? Wo ist der Unterschied??? Last edited: 2009-10-01 11:12:12 +0200 (CEST) |