alarm

Синтаксис

alarm SECONDS
alarm

Описание

Функция alarm предназначена для планирования генерации сигнала SIGALARM.Этот сигнал будет передан процессу через указанное в качестве аргумента количество секунд. Если аргумент не указан, будет использоваться значение переменной $_.
ПРИМЕЧАНИЕ
Следует иметь в виду, что на некоторых машинах из-за особенностей реализации таймера интервал времени может быть на единицу меньше, чем вы указываете.

С помощью alarm вы можете установить только один таймер. Каждый последующий вызов отменяет действие предыдущего таймера, а для отмены действия таймера вообще вы можете передать в качестве аргумента 0. Значение, возвращаемое функцией, представляет собой временной интервал, «недосчитанный» предыдущим таймером. В тех случаях, когда точность отсчета задержки в одну секунду для вашего приложения оказывается недостаточной, вы можете использовать вызов syscall, c помощью которого можно получить доступ к процедуре settimer. Альтернативой может служить использование функции select. Не рекомендуется использовать одновременно вызовы alarm и sleep. Если вы планируете использовать alarm для формирования интервала тайм-аута системного вызова, потребуется использовать конструкцию eval — die. Вы не можете полагаться на сигнал, вызванный отказом в выполнении системного вызова за счет проверки равенства переменной $! значению ЕINTR, поскольку некоторые версии Perl самостоятельно устанавливают обработчики системных сигналов. А вот пара eval — die работает всегда! Пример:
eval {
local $SIG{ALRM} = sub { die "alarm\n" };  # \n обязательно!
alarm  $timeout;
$nread = sysread SOCKET, $buffer, $size;
alarm 0;
};
die if $@ && $@ ne "alarm\n";  # передача ошибок дальше
if ($@) {
# тайм-аут
} else {
# все в порядке...
}



2011-04-26 00:53:16 lykich

Thanks




Оставить комментарий:
Ваше Имя:
Email:
Антибот: *  
Ваш комментарий: