Filelocking Problem



  • hallo,

    ich frage mich, wie ich mit den standard funktionen LockFile oder
    LockFileEx ein vernünftiges filelocking hinbekommen soll.

    im prinzip möchte ich aus einer datei einen bereich lesen,
    diesen verändern und irgendwann zurückschreiben. während dieser
    zeit sollen alle anderen prozeße lesezugriff auf diesen bereich
    haben. dummerweise geht das aber nur mit LockFileEx. diese funktion
    wiederum bedingt aber ein UnlockFileEx, damit der eigene (!) prozeß
    dann den bereich wieder zurückschreiben kann ( war mir zwar nicht
    ganz klar, ist aber tatsächlich so ); bedeutet, daß theoretisch der
    bereich ja zwischen meinem unlock und meiner folgenden schreiboperation
    von einem anderen prozeß schon wieder verändert worden sein kann.

    faq, msdn habe ich schon durchgeforstet, das scheint mir aber ein
    thema zu sein, wo es nicht allzuviele informationen gibt oder
    ich sehe den wald vor lauter bäumen nicht

    vielleicht hat ja einer von Euch einen genialen tip
    tschüss Dieter



  • Schaut so aus, als hättest du Recht (sofern es stimmt, dass du den Bereich nicht zweimal locken kannst - einmal für Schreiben, einmal für Lesen)

    Im Moment seh ich auch nix brauchbares. Du kannst natürlich nach dem compare & swap Prinzip arbeiten und vor dem Schreiben überprüfen, ob wer anderer was geändert hat, indem du den Inhalt mit dem ursprünglichen Inhalt vergleichst. Oder du machst eine Arbeitskopie, und die anderen können das ursprüngliche File ungehindert lesen. Ist zwar alles irgendwie hässlich, aber was besseres weiß ich auch nicht.

    Wenn es allerdings ausschließlich deine eigenen Programme sind, die auf das File zugreifen, dann kannst du natürlich die Synchronisation auch über andere Mechanismen abwickeln und hast das Problem nicht.


Anmelden zum Antworten