Tach!
Beim Öffnen der Datei (egal in welchem Modus) wird automatisch immer die aktuelle Version mitgelesen.
Es bleibt ein Schritt, wenn die Versionsnummer in ihr drin steht, denn ...
Wenn dann zurückgeschrieben wird, wird nach dem erlangen von LOCK_EX erstmal überprüft, ob die Versionsnummer noch stimmt.
... wenn du das EX bekommst, kannst du auch in der Datei selbst nach der Versionsnummer suchen.
Dadurch kann ich sogar folgendes machen: Datei mit LOCK_SH sperren, einlesen, Sperre freigeben. Dann Daten modifizieren und wie oben zurückschreiben. Klingt gut?
Die Datei loslassen must du ja auch zwischen zwei Requests. Also muss es auch problemlos möglich sein, innerhalb eines Requests die Datei loszulassen. Hauptsache, du bekommst keine Deadlocks. Also beim Schreiben solltest du gleich EX holen und nicht mit SH andere auf EX wartende SH blockieren, während du selbst auf EX wartest.
dedlfix.