Есть функция solve которая в 0.001% случаях может зависнуть. Ее
нужно прервать по таймауту.
Пишу:
warn "started solve\n";
my $solution;
eval {
local $SIG{ALRM} = sub { die };
alarm 5;
$solution = solve($lp);
alarm 0;
};
my $is_timeout = $@;
delete_lp($lp);
if ($is_timeout) {
warn "time out\n";
} else
{
warn "sol $solution\n";
if ($solution == $INFEASIBLE)
{
# INCONSISTENCIES DETECTED
return 0;
}
}
Пишет в stderr "started solve" и все, по таймауту не выходит,
висит в 100% CPU. В чем проблема? как решить?
Форум —
Development

