Teil von SELFHTML aktuell Teil von Artikel Teil von Programmiertechnik Teil von Sperren von Dateien

Sperren von Dateien: Deadlocks - Teergruben bei Dateisperren

nach unten Allgemeines

Allgemeines

Das Sperren von Dateien kann jedoch auch zu Problemen führen, die vorher nicht aufgetreten sind. Das wichtigste Problem sind sogenannte Deadlocks. Dies tritt auf, wenn zwei Programme wechselseitig auf das Freiwerden einer jeweils anderen Dateisperre warten und damit für immer warten.

Folgendes Beispiel soll dies illustrieren:

  1. Script 1 sperrt die Datei 'a.txt' exklusiv, um sie zuerst auszulesen und dann zu beschreiben.
  2. Script 2 sperrt die Datei 'b.txt' exklusiv.
  3. Script 1 liest die Datei 'a.txt' aus.
  4. Script 2 liest die Datei 'b.txt' aus.
  5. Script 1 stellt fest, dass es die Datei 'b.txt' einlesen müsste, bevor es alle Informationen zur Verfügung hat, um den neuen Inhalt für Datei 'a.txt' berechnet zu haben. Also versucht es, die Datei 'b.txt' zu sperren. Das Betriebssystem wartet nun auf das Freiwerden der Sperre durch Script 2, bevor es die Kontrolle an Script 1 zurückgibt.
  6. Script 2 stellt fest, dass es die Datei 'a.txt' einlesen müsste und versucht daher, diese Datei zu sperren. Das Betriebssystem wartet nun auf das Freiwerden der Sperre durch Script 1, bevor es die Kontrolle an Script 2 zurückgibt.
  7. Beide Scripte warten gegenseitig auf das Freiwerden einer Sperre, die das jeweils andere angelegt hat.

Dieses Senzario lässt sich beliebig verkomplizieren, dass zum Beispiel 3 oder mehr Programme in einem Kreis auf die Sperren warten (1 wartet auf 2, 2 auf 3 und 3 wieder auf 1) oder dass es gar nicht um ganze Dateien, sondern nur um unterschiedliche Bereiche der gleichen Datei geht.

Zudem gibt es je nach Sperrmechanismus noch die Möglichkeit, dass ein Prozess eine Datei zweimal öffnet und dann versucht, zu sperren - beim zweiten Mal wartet er allerdings auf sich selbst.

Wenn der Code gut durchdacht und jedes Programm auf einander abgestimmt ist, dann treten Deadlocks nicht auf. Es gibt jedoch kein Patentrezept, um sie zu vermeiden, jedoch folgende nützlichen Tipps, die man beachten könnte:

weiter Seite Threads - Stolperfallen der modernen Performanceoptimierung

zurück Seite Dateien mit Java sperren

Teil von SELFHTML aktuell Teil von Artikel Teil von Programmiertechnik Teil von Sperren von Dateien

© 2006 bereichsübergreifende Seite Impressum