Der Martin: Dateidownload - mehrere Prozesse

Beitrag lesen

Hi,

Übliche Locking-Mechanismen arbeiten immer so, dass es zwei Stufen der Sperre gibt:

  • shared lock: der eigene Pozess kann nur lesen, andere können lesen
      und ebenfalls shared locks setzen auf die Datei

  • exclusive lock: der eigene Prozess kann lesen und schreiben, andere können weder lesen,
      noch schreiben, noch locks setzen.

und keinen Modus, in dem "ich selbst" schreiben und lesen darf, andere Prozesse aber immerhin lesen?
Zumindest hatte ich unbewusst vorausgesetzt, dass es den gibt, weil ich von Windows her noch den Modus "Deny Write" beim Öffnen einer Datei kenne, der genau das leisten soll. Wenn's das bei Betriebssystemen nicht gibt ...

Wenn ein Prozess vor hat, Daten zu verändern, muss er die exclusive Sperre bereits zum Lesen setzen, um keine Gültigkeitslücke entstehen zu lassen.

Ja. Aber hier geht es ja ums Neu-Anlegen, nicht um Read-Modify-Write.

Da es mWn heutzutage keine Filesysteme mehr gibt, die noch mit FCBs (File Control Blocks) arbeiten, sollte das allgemeingültig sein. Windows hat das allerdings bei FAT lange Zeit noch gemacht für das Umbenennen von Verzeichnissen.

Stimmt, ich entsinne mich. War aber AFAIR nur damals bei alten "reinen" DOS-Versionen so, DOS 7.x hat das schon rein namensbasiert über den DOS Function Call 56h (IIRC) gemacht, der sowohl Verzeichnisse, als auch normale Dateien umbenennen und dabei sogar auf demselben Datenträger verschieben konnte.

Wenn da mal zum passenden Zeitpunkt das System abgestürzt ist, hatte man schon mal zwei Verzeichnisse mit demselben Namen. Das ließ sich mWn mit den Bordmitteln nicht wieder beseitigen.

Hm. Kann sein. Den Fall hatte ich nie. ;-)

Ciao,
 Martin

--
Ein Snob ist ein Mensch, der sich auf ein Stachelschwein setzt, ohne eine Miene zu verziehen - nur weil ihm jemand gesagt hat, das sei ein Designersessel.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(