Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
PerlMonks  

Re: Re: Re: newbie writing a counter

by nardo (Friar)
on Aug 08, 2001 at 03:49 UTC ( #102942=note: print w/replies, xml ) Need Help??


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

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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://102942]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (7)
As of 2022-05-16 08:55 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    Do you prefer to work remotely?



    Results (62 votes). Check out past polls.

    Notices?