[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