|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Andrey Sapozhnikov 2:5020/400 08 Jan 2002 17:53:38 To : Alexander Bolotnov Subject : Re: ? --------------------------------------------------------------------------------
Alexander Bolotnov wrote:
> Anton,
>>допyстим мне надо пеpиодически совеpшать некотоpые действия. напpимеp
>>ежесекyндно выводить стpочкy. как это можно сделать?
> perldoc -f sleep ?
Точное решение выглядит много сложнее.Даже если абстрагироваться от того,
что большинство из нас работает не в системах реального времени и
никакой гарантии того, что sleep(1) вернется через секунду, а не через 5
нет, так еще возникает нарастающая ошибка. Т.е. зарядив:
foreach (1..86400) {
print "Hello\n";
sleep 1;
}
можно получить изрядную прибавку к запрошенным суткам. Особенно если
print выполняется долго. Возможный выход - берем Time::HiRes и
каждый раз перед задержкой определяем время оставшееся до "часа Х".
После чего заказываем необходимую задержку, по возможности используя
более точные механизмы gettimeofday и usleep. Удобен альтернативный
механизм Time::HiRes оперирующий с плавающей арифметикой. С ним
не придется заниматься определением того, какая точность поддерживается
в данной ОС:
use Time::HiRes;
my $deadline = 1010525734;
Time::HiRes::sleep($deadline - Time::HiRes::time);
Андрей
--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/5284381aed51.html, оценка из 5, голосов 10
|