Munin::Common::Timeout - Run code with a timeout. May nest.
use Munin::Common::Timeout;
do_with_timeout(50, sub {
# ...
do_with_timeout(5, sub {
# ...
# ...
});
# ...
});
See also Time::Out, Sys::AlarmCall
- do_with_timeout
-
my $finished_with_no_timeout = do_with_timeout($seconds, $code_ref)
or die "Timed out!";
Executes $block with a timeout of
$seconds. Returns the return value of the
$block if it completed within the timeout. If
the timeout is reached and the code is still running, it halts it and
returns undef.
NB: every $code_ref should return
something defined, otherwise the caller doesn't know if a timeout
occurred.
Calls to do_with_timeout() can be nested. Any
exceptions raised by $block are propagated.