Tom: Unerklärliche Warnung bei foreach

Beitrag lesen

Hello Markus,

Dein Konzept hat aber noch mehr Fehler, als Dir Eddi schon erzählt hat:

Das Locking-Konzept ist leider nicht richtig.

Wenn Du an einer Datei Änderungen vornehmen willst im konkurrierenden Betrieb, dann siehr dei Vorgehensweise so aus:

ggf. Datei zerstörungsfrei anlegen mit fopen(Datei,'a')
Datei wieder schließen

nun (hoffentlich noch vorhandene) Datei zum Lesen und Schreiben öffnen mit fopen(Datei,'r+')
Dateisperre beantragen und zwar EXCLUSIV
Wenn locked werden konnte

  • datei lesen
  • daten ändern
  • datei schreiben
    Datei schließen (die Freigabe des Locking findet beim Schließen automatisch statt)

Warum darf man eine Datei zum Auslesen nicht erst mit lock(sh) öffnen, sondern muss zum Zwecke auch den Lesevorgang mit lock(ex) durchführen?

Weil die Prozesse konkurrieren, und ein lock(sh) niemanden davon abhalten würde, sich auch ein lock(sh) zu holen und die Datei auszulesen

lesen         A (sh)    B (sh)   A(un)    A(ex)   B(ex)   A(un)    B(un)  A
            |  bbc       bbc                               B(ex)           bbz
            +------------------------------------------------------------------------------->
 schreiben  |                              abc             bbz

Bemerkung                                          muss   B steht        Huch?
                                                   warten  Schlange
                                                           Lock folgt
                                                           sofort

Das lässt sich hier nicht richtig malen.
Wollte das noch mit drei Teilnehmern und einem Zähler zeigen. Da wird es deutlicher.
Musst Du eben noch warten, bi der Artikel endlich mal fertig wird.

Harzliche Grüße aus http://www.annerschbarrich.de

Tom

--
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau