in reply to Re: newbie writing a counter
in thread newbie writing a counter

In the first file open, I set an array so that I can then add 1 to the number. Even if all the information is destroyed in the first file open (which is read only right?), I have still written the array which is stored. When the first process is done, it goes to the second, which opens the file as read/write and then writes the new variable, which was the first item in the array plus one. When that is done, I then open it one last time in read only, and then set a new array so that I can then post the number as output to HTML. This is the way I see what is going on. I don't quite follow you on what you are saying.

Replies are listed 'Best First'.
Re: Re: Re: newbie writing a counter
by nardo (Friar) on Aug 08, 2001 at 03:49 UTC
    When the first process is done, it goes to the second

    If you're running on an operating system which does not support multitasking, then this statement is correct, but if you're running on any modern OS (Windows 9x/NT, unix) then you can not control when the OS switches to another process. Your operating system, in order to run multiple processes at once, will periodically switch from one process to another (assuming it is a preemptive multitasking OS, you will have no control over when it does this) so after the first process opens the file for writing (thus erasing the contents of the file) you can not ensure that the flock call will occur before another process runs.

    First process erases file
    OS switches to second process
    Second process opens locks and reads in empty file, closes file releasing the lock which allows first process to lock the file
    OS switches to first process which locks and writes correct count to file
    First process terminates leaving file with correct count
    Second process increments empty count to 1 and writes 1 to the file
    Second process terminates leaving the file with the count of 1 regardless of what it was when process one started.