[Catalyst] RFC: C::P::Alarm (was Re: timeouts)
Peter Karman
peter at peknet.com
Fri May 5 03:16:04 CEST 2006
Nilson Santos Figueiredo Junior scribbled on 5/4/06 3:41 PM:
> On 5/4/06, Peter Karman <peter at peknet.com> wrote:
>> Comments & patches welcome.
>
> Unfortunately, Sys::SygAction doesn't work under Win32.
> Wouldn't alarm() suffice instead of having this dependency? alarm()
> seems to work alright as of AS Perl 5.8.8 build 816.
It's not alarm() that's the issue, iirc. C::P::Alarm uses the CORE
alarm() function. I see that I wasn't clear enough about that in the
BUGS section of the pod.
I believe it has to do with how win32 systems deal with sig alerts in
general -- that is, not well.
From the Perl Win32 doc (http://perldoc.perl.org/perlwin32.html):
<quote>
Signal handling may not behave as on Unix platforms (where it doesn't
exactly "behave", either :). For instance, calling die() or exit() from
signal handlers will cause an exception, since most implementations of
signal() on Win32 are severely crippled. Thus, signals may work only
for simple things like setting a flag variable in the handler. Using
signals under this port should currently be considered unsupported.
</quote>
That said, the Alarm plugin tries to only do "simple things" so it might
work.
I would be willing to include a win32-specific check to avoid using
Sys::SigAction on those systems. Instead, I could use the straight up
$SIG{ALRM} syntax (which is what Yuval originally posted on this topic).
Of course, I would need a win32 user like yourself to test. :)
What's the currently preferred way of testing for OS platform these
days? Is it still just $^O ?
--
Peter Karman . http://peknet.com/ . peter at peknet.com
More information about the Catalyst
mailing list