Есть функция 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. В чем проблема? как решить?
Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от dilmah

Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от swizard
Ответ на:
комментарий
от dilmah

Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от dilmah

Ответ на:
комментарий
от tailgunner
Ответ на:
комментарий
от dilmah

Ответ на:
комментарий
от dilmah

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум помогите с сигаларм разобраться (2005)
- Форум perl, timeout при опросе ns серверов (2012)
- Форум Perl + FastCGI + nginx (2009)
- Форум Оцените код написанный ИИ (2025)
- Форум Почему не работает скрипт? (2013)
- Форум perl таймаут (2009)
- Форум мониторинг изменений конфигурационных файлов системы (2007)
- Форум Perl: таймаут для <STDIN>, еще пару вопросов. (2008)
- Форум Система намертво зависает через некоторое время после запуска игр. (2024)
- Форум Таймаут http (2025)