我经常使用以下模式来设置Perl中特定代码片段的运行时间上限:
my $TIMEOUT_IN_SECONDS = 5;
eval {
local $SIG{ALRM} = sub { die "alarm\n" };
alarm($TIMEOUT_IN_SECONDS);
# do stuff that might timeout.
alarm(0);
};
if ($@) {
# handle timeout condition.
}
我的问题:
- 这是正确的方法吗?
- 是否存在任何情况下,运行时间可能超过$TIMEOUT_IN_SECONDS,或者上述方法是完全可靠的?