LINUX.ORG.RU

perl таймаут


0

0

подскажите как сделать таймаут на перле например если есть код:

while(1){ 1.оператор 2.оператор 3.оператор }

нужно чтобы за каждый цикл программа выполняла 1 оператор, потом начинала выполнять 2 и если 2 оператор выполняется слишком долго то переходила сразу к 3 оператору.

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

alarm и Time::Out не подходят извините забыл сказать что таймаут надо меньше 1 секунды. есть другие варианты?

TDrive ★★★★★
() автор топика

Можно завязать все на Glib::Timeout, который умеет таймауты меньше секунды, но, естественно для этого понадобятся перловые биндинги для Glib'а.

d_a ★★★★★
()
Ответ на: комментарий от TDrive
$ perldoc -f alarm | grep -A6 Time::HiRes
               Time::HiRes module (from CPAN, and starting from Perl 5.8 part
               of the standard distribution) provides ualarm().  You may also
               use Perl’s four-argument version of select() leaving the first
               three arguments undefined, or you might be able to use the
               "syscall" interface to access setitimer(2) if your system
               supports it. See perlfaq8 for details.
Eshkin_kot ★★
()
Ответ на: комментарий от TDrive

> в CPAN его нету?

Не знаю, я средствами дистрибутива ставил (пакет glib-perl).

d_a ★★★★★
()
Ответ на: комментарий от Eshkin_kot

Во в Time::HiRes есть функция ualarm() такая же как alarm() только время в микросекундах :) всем спс.

TDrive ★★★★★
() автор топика
Ответ на: комментарий от TDrive

Вообще-то в Time::Out написано, что "при использовании Time::HiRes аларм будет действительным числом".

lodin ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.