Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

Shared-Update-Verarbeitung

&pagelevel(4)&pagelevel

JRIO erlaubt die simultane, durch Sperren (Locks) synchronisierte Bearbeitung einer Datei durch mehrere Anwendungen (Shared-Update-Verarbeitung), sofern dies vom jeweiligen Dateisystem und der Zugriffsmethode unterstützt wird.

Diese Verarbeitungsart muss von der Anwendung beim Öffnen der Datei explizit eingestellt werden. Sie garantiert, dass die Verarbeitungsschritte (z.B. Schreiben, Löschen oder die Kombination Lesen und Zurückschreiben) durch Sperren abgesichert werden und daher von konkurrierenden Anwendungen nicht gestört werden können. Die Shared-Update-Verarbeitung kann Dateisystem-spezifischen Einschränkungen unterliegen. Sie kann z.B. für bestimmte Dateiarten oder Open-Modi nicht zulässig sein oder bestimmte Aktionen, wie z.B. das Vergrößern oder Verkleinern von Dateien, nicht gestatten.

Der von JRIO bei Shared-Update-Verarbeitung verwendete Sperrmechanismus arbeitet nach den folgenden Kriterien:

  • satzorientiert:
    eine Anwendung sperrt logisch immer nur Sätze innerhalb einer Datei oder gibt sie frei. Bestimmte Dateisysteme oder Zugriffsmethoden können jedoch physikalisch ein größeres Sperrgranulat realisieren. Für die eigene Anwendung ist dies nicht sichtbar, aber konkurrierende Anwendungen können auf eine Sperre laufen, wenn sie auf einen Satz innerhalb des größeren Sperrgranulats zugreifen wollen, obwohl der angeforderte Satz selbst logisch nicht gesperrt ist.

  • implizit:
    Sätze werden implizit beim Lesen, Schreiben oder Löschen gesperrt. Diese Sperre wird nach Abschluss des Schreib- oder Löschvorgangs auch implizit wieder aufgehoben. Für den Fall, dass ein Satz durch Lesen gesperrt wurde, aber nicht geschrieben werden soll, werden auch Methoden zum expliziten Entsperren angeboten

  • deadlock-sicher:
    eine Anwendung kann pro Datei logisch immer nur einen Satz sperren (Deadlock-Sicherheit). Das Setzen einer Sperre für einen Vorgang führt implizit zur Freigabe einer eventuell bestehenden Sperre für einen anderen Satz. Einige Dateisysteme und Zugriffsmethoden können diese Deadlock-Sicherheit auch über Dateigrenzen hinweg realisieren, d.h. pro Anwendung wird nur eine Sperre gestattet- unabhängig von der jeweiligen Datei.

JRIO ermöglicht bei der Shared-Update-Verarbeitung die Steuerung des Verhaltens der Anwendung bei Zugriffskonflikten. Die Anwendung kann die sofortige Übergabe der Kontrolle verlangen (Parameter NO_WAIT). Dann wird bei Zugriffskonflikten eine entsprechende Exception (RecordLockedException) geworfen, oder sie kann als Thread (Parameter THREAD_WAIT) bzw. an der Systemschnittstelle (Parameter APPLICATION_WAIT) auf Zuteilung der Sperre warten. Die Wartezeit ist bei beiden Varianten unbegrenzt, d.h. die Anwendung wartet bis zum Erhalt der Sperre oder bis sie beendet wird. Das Warten als Thread bietet den Vorteil, dass andere Threads der Anwendung nicht blockiert sind. Im Extremfall kann es aber dazu führen, dass die Sperre von einer konkurrierenden Anwendung immer gerade in dem Moment gehalten wird, in dem die wartende Anwendung einen neuen Versuch unternimmt, obwohl die Sperre zwischenzeitlich verfügbar war. Nicht alle Dateisysteme bieten alle Varianten des Wartens an. Wenn aber eine Variante angeboten wird, gilt dafür die beschriebene Semantik.