Andreas Lindig: gibts sowas wie ... echtes filelocking? ;-)

Beitrag lesen

Dir ist klar, dass die Datei nur zur Laufzeit gesperrt ist? Ist das
Script beendet, ist auch der Lock aufgehoben.
ich habe deshalb in die Testdatei ein sleep() eingebaut. Ob das nun zur
Laufzeit zählt, weiß ich nicht.
Jepp, tut es.

demnach hätte sich bei den Tests aber für den jeweils zweiten Aufruf innerhalb dieser Zeit ein "schon gesperrt" ergeben müssen...

Eine “Race Condition” tritt z. B. dann auf, wenn der Lock-Vorgang nicht
atomar ist. Also z. B. dann, wenn ich mit Lock-Dateien arbeite: Prozess A
prueft, ob die Datei vorhanden ist. Sie ist noch nicht vorhanden und
deshalb geraet A in den kritischen Bereich, wird dann aber vom Scheduler
schlafen gelegt um mit Prozess B fortzufahren. Prozess B prueft dann auch,
ob eine Lock-Datei vorhanden ist und geraet auch in den kritischen Bereich.
Beide legen eine Lock-Datei an (auch eine nicht-atomare Operation). Wer
hat nun den Lock?

der letzte eben. Aber deswegen wird bei mir _vor_ dem Auslesen gelockt und vor dem Schreiben nochmal nachgesehen. Wenn ein fremd-Prozess den Lock überschreibt, kann der erste nicht mehr schreiben. Es müßte schon passieren, daß beide eine leere lockdatei finden, A schreibt den Lock, liest die Hauptdatei aus, verändert die Daten, kontrolliert die Lockdatei: o.k. Und _danach_ erst schreibt B die Lockdatei zurück und darf die Hauptdatei lesen. Wenn jetzt A die Hauptdatei zurückschreibt liest B vielleicht was Falsches aus. Kommt mir sehr unwahrscheinlich vor. Im Zweifel könnte man noch das Zeitfenster begrenzen: wer die Lockdatei nicht innerhalb einer bestimmten Zeit zurückschreiben kann bekommt den Lock nicht. Und der Andere muß mindestens diese Zeit abwarten bevor er den Lock das zweite Mal ausliest. Wird schon gehen, vertrau mir ;-)

Ich wuerde mir das ueberlegen.
Im Moment lieber nicht. [...]
_Mir_ fliegt es ja nicht um die Ohren :)

wußte gar nicht, daß die SELF-Server explosiv sind ;-)
sieh Dir die Funktionen an, wenn es bei Dir ist, und wenns wirklich zu grottenschlecht sein sollte, kannst Du ja immer noch meckern.

Ich bitte auch zu bedenken, daß das Projekt in meinem Forum immer
zur Diskussion stand und die Beteilligung der Devs etwa 0 war.
Tut mir leid, aber davon habe ich nichts mitbekommen

wie dem auch sei. Verstehe bitte, daß ich einfach anfangen wollte und den Eindruck hatte, Diskussion ist da nicht sonderlich erwünscht. War mir auch nicht danach, euch immer wieder mit Mails zu nerven.

Gruß, Andreas

--
SELFFORUM - hier werden Sie geholfen,
auch in Fragen zu richtiges Deutsch