On Thu, Dec 06, 2007 at 01:07:21AM +0100, Jochen Stenzel <[EMAIL PROTECTED]> wrote: > * I *could* stop the loop in the debugger today, but it took a while:
Although the behaviour is consistent with any other extension module for perl, I tried to document this in the next EV release: =head1 PERL SIGNALS While Perl signal handling (C<%SIG>) is not affected by EV, the behaviour with EV is as with any other C library: signals will only be handled when Perl runs, which means your signal handler might be invoked only the next time an event gets handles. The solution is to use the the EV signal handlers (see C<EV::signal>). If you cannot do this for whatever reason, you can also force a watcher to be called on every iteration by installing a C<EV::check> watcher: my $async_check = EV::check sub { }; This ensures that perl shortly gets into control for a short time. Note, however, that this does not work for the perl debugger as the perl debugger can only stop at the next perl statement to be executed - this is a limitation of perl (or more precisely the debugger). As this is also the exact same behaviour as with Event (or other event loops), so I find it rather surprising that it needs mentioning, but I hope the additional documentation is not wasted and actually proves helpful to somebody. (But then, signal handling does require knowledge of the underlying operating system handling of signals). -- The choice of a -----==- _GNU_ ----==-- _ generation Marc Lehmann ---==---(_)__ __ ____ __ [EMAIL PROTECTED] --==---/ / _ \/ // /\ \/ / http://schmorp.de/ -=====/_/_//_/\_,_/ /_/\_\ XX11-RIPE