Next: Планирование
Up: Linux & POSIX.1b
Previous: Синхронный ввод -
- Вместо старого BSD стиля gettimeofday()/ settimeofday() вызовов,
POSIX.1b определяет clock_gettimer(), clock_settimer() и
clock_getres(). Они предлагают наносекундную точность вместо микросекунд как со старыми
запросами BSD (по крайней мере на Pentium-ах доступно разрешение таймера
существенно
меньше микросекунды). Кроме того, вы теперь можете подвергнуть сомнению
фактическую точность таймера с помощью clock_getres().
- Новая функция nanosleep() позволяет ``заснуть" также меньше чем на секунду (
старый sleep() имел только секундную точность). Кроме того, nanosleep не
будет конфликтовать с SIGALRM и в случае EINTR, который возвращает
затраченное время, так что вы можете легко продолжать цикл ожидания.
- POSIX.1b определяет также itimers, однако вместо того,
что существующий BSD
поддерживает itimers, вы теперь можете иметь дело с несколькими таймерами
(по крайней мере 32 на процесс) и вы имеете снова теоретическую точность
до одной
наносекунды. Старые функции itimer могут быть все еще легко выполнены
в libc, поскольку совместимы с использующими новый POSIX-стиль itimer
системных вызовов.
Состояния выполнения: POSIX часы и itimers системные вызовы
еще не были
осуществлены, хотя много функциональных возможностей уже доступны в форме BSD
таймеров и их добавление должно быть весьма простым. Очереди сигналов должны
быть осуществлены сначала для itimers. Nanosleep() уже доступен в Linux, но
в настоящее время поддерживается только до 10 ms рарешение и это может
приводить к произвольным кратковременным ожиданиям продолжительностью до 2 ms.
Работа на более высокоточных таймерных механизмах для Linux описана на
URL: http://hegel.ittc.ukans.edu/projects/utime/.
Vladimir Chernenkov
Fri Jun 13 10:57:19 MSD 1997