Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re^2: Ensuring only one copy of a perl script is running at a time

by ikegami (Pope)
on Dec 19, 2006 at 17:32 UTC ( #590713=note: print w/ replies, xml ) Need Help??


in reply to Re: Ensuring only one copy of a perl script is running at a time
in thread Ensuring only one copy of a perl script is running at a time

That's wrong. It suffers from a race condition.

+===============================+===============================+ | Process 1 | Process 2 | +===============================+===============================+ | open the status file | | T | read the status (status is 1) | | i +-------------------------------+-------------------------------+ m | | open the status file | e | | read the status (status is 1) | | | | write 2 to the status file | | | | proceed | | +-------------------------------+-------------------------------+ v | write 2 to the status file | | | proceed | | +===============================+===============================+

If you use flock, then it's just an extention of what the OP posted.

( Oops! Seems like tye posted something similar when I was writing this node. )


Comment on Re^2: Ensuring only one copy of a perl script is running at a time
Select or Download Code
Re^3: Ensuring only one copy of a perl script is running at a time
by PockMonk (Beadle) on Dec 19, 2006 at 17:47 UTC

    Suggest you read my response posted 4 minutes *before* your reply.

    20061220 Janitored by Corion: Content restored

      Suggest you read my update posted 15 minutes *before* your reply.

      (tye's post wasn't there when I started replying, so your reply to his post wasn't either!)

      Citing tye:
      It sounds like it is time for you to update your computer science knowledge by learning about race conditions.
      When a question/issue raises up, it's likely that more than one person will try to answer. This is not even a shared CPU environment: it's true concurrency. But humans tend to have personal ways of doing stuff: there's the verbose one, the one that uses only two fingers to write on the keyboard, the one that answers to the telephone... and in the end you have that many answers overlap each other, even if their times are quite different. It's like a race... a race condition :)

      In this case, I'd also enhance your answer to the OP giving enough evidence of the need to use flock (and marking such a modification clearly, in order to keep the following answers "meaningful"): the fact that your personal script used flock was not entirely evident :)

      Flavio
      perl -ple'$_=reverse' <<<ti.xittelop@oivalf

      Don't fool yourself.

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (8)
As of 2014-07-30 04:17 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite superfluous repetitious redundant duplicative phrase is:









    Results (229 votes), past polls