URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 2483
[ Назад ]

Исходное сообщение
"Раздел полезных советов: Как ограничить время выполнения Perl блока таймаутом"

Отправлено auto_tips , 10-Сен-03 07:05 
use constant TIMEOUT => 1;
eval {
   local $SIG{ALRM} = sub { die "timeout during sysread\n"; };
   alarm(TIMEOUT);
   $read_flag = sysread($filehandle, $c, 1);
   alarm(0);
};


URL:
Обсуждается: http://www.opennet.me/tips/info/308.shtml


Содержание

Сообщения в этом обсуждении
"Как ограничить время выполнения Perl блока таймаутом"
Отправлено Alex , 10-Сен-03 07:05 
Применение конечно намного шире нежели чем просто "die" внутри eval. Каждый новый alarm отменяет действие предыдущего и переустанавливает счетчик "секунд". Значение 0 отменяет alarm вообще.
Не всегда alarm корректно отрабатывает под mod_perl.  В каждом случае надо пробовать отдельно.

"Как ограничить время выполнения Perl блока таймаутом"
Отправлено Дмитрий , 15-Июл-06 02:19 
Спасибо алекс