![]() |
|
|
Google unix.com
|
|||||||
| Форумы | Регистрация | Правила форума | Ссылки | Альбомы | ЧАВО | Список участников | Календарь | Поиск | Сегодняшние сообщения | Отметить форумы читать |
| HP-UX HP-UX (Hewlett Packard UNIX) является Hewlett-Packard Собственная реализации на Unix операционной системы, основанной на System V. |
Подробнее UNIX и Linux Темы форума можно найти полезные
|
||||
| Нить | Резьба для начинающих | Форум | Ответы | Последнее сообщение |
| добавить вывод запроса на переменную, которые будут использоваться в другой запрос | hazno | Shell программирование и сценарии | 0 | 03-24-2009 08:52 PM |
| Mac OS X: Почему ваш Mac, возможно, не спать или находиться в режиме сна | iBot | OS X Поддержка RSS | 0 | 03-19-2009 10:50 PM |
| Localtime для конвертирования unixtime | AshishK | UNIX перспективных И опытных пользователей | 2 | 10-30-2007 10:22 AM |
| Perl + Localtime () | Optimus_P | Shell программирование и сценарии | 3 | 07-09-2003 06:32 PM |
| спать | Анна | UNIX для чайников Вопросы И Ответы | 5 | 07-11-2001 12:52 AM |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread |
Оценка:
|
Режимы дисплея |
|
|
|
||||
|
И спать Localtime запроса
Привет,
Я работаю на HPUX заявку, и я был запрос относительно сна И Localtime система вызова в HPUX. Вот код, который мы имеем: Const uint32_t WAKE_INTERVAL_SEC (30 * 60); а (True) ( / / Узнайте, какое время он является времени (И currentTime); / / Резьба по согласованию с wakeup часов 30 минут т.е. если сейчас 9:20 wakeup после 10 минут, / / Если это время 9:05, просыпаться после 25 минут. / / Расчет оставшегося количества секунд в полчаса. sleepTime \u003d WAKE_INTERVAL_SEC - (currentTime% WAKE_INTERVAL_SEC); в то время как (1) ( сон (sleepTime); / / Делаем что регулярная работа tptr \u003d Localtime (И currentTime); если (12 \u003d\u003d tptr-> tm_hour И И tptr-> tm_min <WAKE_INTERVAL_MIN) ( / / Полдень работу ) ) Ожидаемое поведение: Как упоминалось выше код, мы ожидаем, что каждые полчаса, некоторые работы, которую предстоит сделать, и если это время бывает от 12 до 12:30 мы также делать полдень работы. Фактическое поведение: Большую часть времени он работает, как ожидалось. Но иногда, спать, как представляется, выход нескольких секунд до 12:30, и поэтому логика неуспешно и делает работу в полдень. В идеале я хотел бы ожидать, что условия работы полдень на провал, поскольку нить имеет проснулся в 12:30 и, следовательно, она не может satisify полудня работы состоянии. (Trace в журнале показывает, что регулярная работа началась в 12:30, но сама лесозаготовок заняло бы некоторое время, и я подозреваю, сон может иметь проснулся рано) Вопрос: - Можно спать просыпаться досрочно времени (помимо SIGALRM)? Существуют ли какие-либо другие условия, в которых могли бы спать просыпаться до запланированного времени? - Можно Localtime используется для сравнения вернуть то время? - Возможно ли, что Есть какое-то время сделали корректировки внутри (может быть для внутренних часов дрейфа и т.д.), что приводит в сон начинает второе раньше, чем ожидается, или по местному времени делать какие-то корректировки в какой-то причине? Любой вклад в этом отношении ценятся. Благодаря И Regards, NSV |
|
||||
|
Почему бы не использовать CRON или планировать свой код? Эти построены для запуска команд или сценариев в точно вовремя.
Плюс, сон (1) не гарантируется спать ровно одну секунду. |
|
||||
|
Привет Джим,
Спасибо за ответ. Собственно нитей может проснуться в любое время основывается на планировщика, так что логика заключается в том, чтобы проверить время нить нужно спать, чтобы ее привести в соответствие с 30-минутными интервалами. С уважением, nsvora |
|
||||
|
Я попытался передать это ясно: Вы не можете гарантировать, как именно это долгий сон. Вы должны добавить некоторые отстойные (помадка фактор) в секундах расчет, так или иначе, она не собирается работать в абсолютно каждый раз - пример предполагает вы POSIX совместимо времени - то есть. не скачок секунд.: Код:
calculate duration of sleep: time_t how_long_to_sleep=1800; how_long_to_sleep-= time(NULL) % 1800; sleep(!how_long_to_sleep ? 1800 : how_long_to_sleep); Время теста после wakeup: Код:
time_t now=time(NULL); now=now % 1800; if( now < 2 && now > 1797) // sleep period ended close enough else // sleep period is off by too much fi Кроме того, можно попробовать usleep (стоимость), который имеет тонкие гранулярности в мс, но опять значение является минимальным. Оно может быть больше. Например, более высокий приоритет, чем это показывается. |
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|