[Allegro] Mysteriöse Variable

Thomas Berger ThB at Gymel.com
Do Mai 3 12:59:39 CEST 2012


Lieber Herr Eversberg,

>>>> ... Beim Zugriff
>>>> auf einen Datensatz (implizit bzw. "f1nd", "get", ...) wird
>>>> dieser Datensatz in einem konsistenten Zustand (Locking auf
>>>> Betriebssystemebene evtl. notwendig) eingelesen.
>>>
>>> Also bei  f1nd  mit Locking, bei  find  nicht!? Na gut, das ginge.
>>
>> NEIN. Ich habe mich bemueht, die allegro-Operationen als
>> .TBL-Sperre und Datensatz-Sperre zu bezeichnen. Implementiert
>> werden muessen sie mit Hilfe des Betriebssystems, dem
>> (Range)-Locking.
>>
> Range-Locking würde, so wie Sie es anvisieren, in der Realität
> erheblich zu komplex, wenn Sie nur an das zuverlässige und
> rückstandsfreie Aufheben all der Sperren denken, insbes. wenn vorher
> das Programm versagt oder mittendrin der Server oder die Verbindung
> zwischen beiden. Im Hinblick darauf ist unsere Methodik stark defensiv.

Ihre Methodik _beruht_ auf dem Range-Locking der Windows-Dateisysteme.
Schauen Sie einfach mal nach, die die .TBL-Sperre implementiert ist:
Dort wird korrekterweise bereits das Auslesen des entsprechenden
Flags in der .TBL-Datei mit Betriebssystemmethoden geschuetzt, wenn
auch aus anderen Gruenden als von mir oben diskutiert: Bei der
.TBL-Sperre geht es um den Vorbehalt eines eventuellen Zurueckschreibens,
das keinen geaenderten Zustand treffen darf, beim Auslesen von Datensaetzen
geht es um Schutz vor (schreibender) Unterbrechung einer tendenziell
mehrteiligen Lese-Operation.

[...]

> Per "get edit" hat man somit eine Kopie, die mit Sicherheit
> anschließend nicht anderweitig modifiziert wird, bevor man selber
> wieder speichert.
> Halt stopp! werden Sie rufen, der Gesamtverantwortliche könnte ja
> derweilen mit dem Hexeditor was machen!!! Ja. Und DAS könnte in der Tat
> allenfalls ein range locking unterbinden.

Nein, solche Bedenken habe ich nicht. Meine Bedenken betreffen
ausschliesslich den eigentlichen, ungeschuetzten Lesevorgang, also
die Millisekunde, die ein individuelles "get" bzw. Nachladen in
Parameterdateien etc. benoetigt: Der Vorgang muss "atomar" sein, er
ist es theoretisch aber nicht, daher muesste eigentlich nachgeholfen
werden.

viele Gruesse
Thomas Berger



Mehr Informationen über die Mailingliste Allegro