[Moscow.pm] Ограничить время выполнения произвольной функции
Mons Anderson
mons на cpan.org
Пт Янв 29 05:21:59 PST 2010
Вообще все еще хуже...
я могу сделать local $GIG{ALRM} = sub { ... }
я могу поставить свой alarm
я могу работать с теми-же таймерами, что и alarm
alarm не работет при вызове XS
поэтому жесткого и гарантированного ограничения в рамках одного процесса быть
не может.
если очень-очень нужно, то надежным будет межпроцессное взаимодействие типа
if (my $pid = fork()) {
WAIT: {
for (1..N) {
waitpid ($pid,WNOHANG) == $pid and last WAIT;
sleep;
}
kill KILL => $pid;
waitpid $pid,0;
}
} else {
foo();
}
fork, sleep N, )
On Friday 29 January 2010 13:06:25 Dmitry E. Oboukhov wrote:
> стоит сабжевая задача.
>
> Для ее решения я пошел по пути описанному в perldoc -f alarm (на CPAN
> есть штук пяток модулей на эту тему например Sys::AlarmCall (он же
> рекомендован к употреблению в perlfaq), я про них знаю, но описанная
> здесь проблема в них во всех проявляется, потому стоит задача
> написания нового модуля, либо прийти к нереализуемости задачи), итак,
> в perldoc -f alarm пример:
--
Mons Anderson aka Vladimir Perepelitsa
<mons на cpan.org> / #99779956 / quanth на irc.freenode.net
Подробная информация о списке рассылки Moscow-pm