On mardi 07 octobre 2008, Rolf-Werner Eilert wrote:
> For my apps in Gambas, I use lockfiles, not folders, to lock a certain
> file. Experience told me that "sometimes" when two users/processes want
> to access the same file, these may overlap. So I added an identification
> method and a time delay in case of locks. This is what it looks like
> (kinda prototyped):
>
> WHILE Exist(theLockFile) THEN
>
>    OPEN theLockFile FOR READ ...
>      LINE INPUT firstLine
>    CLOSE ...
>
>    IF firstLine = myOwnName THEN 'old lock file from myself:
>      KILL theLockFile              'may be deleted, then proceed
>
>    ELSE                          'lock file from someone else:
>      WAIT one second
>
> WEND
>
> 'now first of all, write my own lockfile
> 'then begin reading the file I want
> 'finally delete lockfile
>
> This is how this looks in practice:
>
>    WHILE Exist(pfad &/ "klassenbuch.block")
>      OPEN pfad &/ "klassenbuch.block" FOR READ AS #dtnr
>        LINE INPUT #dtnr, t$
>      CLOSE #dtnr
>      IF t$ = system.User THEN
>        KILL pfad &/ "klassenbuch.block"
>      ELSE
>        WAIT 1
>      END IF
>    WEND
>
>
>    OPEN pfad &/ "klassenbuch.block" FOR WRITE CREATE DIRECT AS #dtnr
>      PRINT #dtnr, system.User
>    CLOSE #dtnr
>
>    OPEN karteiVerz &/ jg &/ "klassenbuch" FOR READ AS #dtnr
>
> and so on. While I am writing this email, I find that this has one big
> drawback: If the lock file was made by someone else and that app
> crashed, my program will wait forever for the lockfile to disappear. So
> one should add a counter, e. g. 5 seconds, to stop waiting.
>
> Regards
>
> Rolf
>

So, use the LOCK instruction to create a system-wide mutually exclusive code 
section!

-- 
Benoit Minisini

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to