Hi -

> -----Original Message-----
> From: Deb [mailto:[EMAIL PROTECTED]]
> Sent: Thursday, February 20, 2003 12:42 PM
> To: [EMAIL PROTECTED]
> Subject: shlock and retrying
>
>
> Hi,
>
> I need to modify some code that check for the existance of a lockfile:
>
> unless (&shlock("$somedir/.cache.LOCK")) {
>     print "$main'program_name: cache already running\n" if $verbose;
>     exit;
> }
>
> I don't want to "exit" if I find the lock there.  What I need to do is
> back off for a short period of time (a few seconds?) then try again, until
> the lockfile is gone.
>
> I'm not sure what might be the best way to approach this.  I'm not comfy
> with an indefinite loop, where if there is some problem removing
> the lockfile,
> my program would wait forever.  I'd rather try for a few minutes,
> then exit
> with some error.
>
> Any pearls of wisdom out there?  I could use a boost...
>
> Thanks,
>
> deb
>

Unless I'm missing the mark, 'sleep' and some simple math
should work, as in:

my $RETRY_SECONDS = 5; # try lock every 5 seconds
my $TRY_FOR = 300;     # fail after 5 minutes
my $try_time = 0;
while (1) {
 last if &shlock("$somedir/.cache.LOCK");
 sleep $RETRY_SECONDS;
 $try_time += $RETRY_SECONDS;
 if ($try_time > $TRY_FOR) {
     print "$main'program_name: cache already running\n" if $verbose;
     exit;
 }
}
...OK from here...

Aloha => Beau;



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to