[Moscow.pm] Ограничить время выполнения произвольной функции
Dmitry E. Oboukhov
unera на debian.org
Пт Янв 29 06:05:22 PST 2010
MA> можно использовать "плохой" goto ;)
MA> perl -E 'sub foo { eval "sleep 10" } { local $SIG{ALRM} = sub { goto EXIT; };
MA> alarm 1; foo(); EXIT: alarm 0; say "exited" }'
Урраа!! заработало!
написал конструкцию:
for (my $i = 0; caller $i; $i++) {
printf "\t %s %s %s %s()\n", caller $i;
}
в функцию SIGALRM и затем сделал goto внутрь основной функции, затем
такую же конструкцию после метки.
в итоге первый вывод показывает стек из 10 элементов, а после метки из
трех!
так что "плохой гото" не такой уж и плохой!
спасибо большое!
--
... mpd playing: Manowar - 01 Achilles, Agony And Ecstasy In Eight Parts
. ''`. Dmitry E. Oboukhov
: :’ : email: unera на debian.org jabber://UNera@uvw.ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537
----------- следущая часть -----------
A non-text attachment was scrubbed...
Name: отсутствует
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://mail.pm.org/pipermail/moscow-pm/attachments/20100129/0c41dfde/attachment-0001.bin>
Подробная информация о списке рассылки Moscow-pm