Выложена (
http://qnx.org.ru/docs-devel/clock.html) новая статья: "QNX: служба времени". Это даже не статья, а "заметки в тему" - результаты достаточно многочисленного экспериментирования и тестирования. Там ещё - работать и работать ..., но у меня на этот subj нет ни энтузиазма, ни времени..., а результаты - интересные.
Этот материал должен быть интересен, в первую очередь, тем, кто сталкивается с созданием тайи-аутов, заданием и измерением временных задержек (т.е. правтически всем

), в первую очередь - сетевикам.
Не раз в форуме звучали вопросы типа: "как задать тайм-ауты по какой-то операции в микросекундном диаппазоне..." (напр.
http://qnx.org.ru/forum/viewtopic.php?topic=89&forum=4&2), и давались советы: используйте select, используйте таймауты ядра (сугубо QNX изобретение...)... Статья как раз и даёт ответ на подобные вопросы, которрый в первом приближении звучит так:
"никак"!
В QNX - как в художественном фильте, где герой "медленно и растяжно" потягивает джин-тоник... На самом деле - он прикладывается к своему стакану 25 (или сколько там точно?) раз в секунду (число кадров), а на вопрос "а чем он занят между кадрами N-1 & N ..." единственно правильный ответ: "а хрен его знает...".
QNX "живёт" во временной шкале, "сетке" тиков, плотность этой сетки - 1
миллисекунда (в 6.1 это - минимальное значение, а в 6.2 - установленное по умолчанию, но можно и меньше...). При задании любого временного интервала, скажем 15мксек. - вы можете считать его чем угодно, но реально это -
от 2-х до 3-х мсек., а на практике, когда "тайм-аутируемые" операции (например чтение) - повторяются циклически, то возникает синхронизация с тиками, и - почти гарантировано - 3 мсек.!
Обо всём этом я попробовал достаточно подробно рассказать в статье. Дальше там показано, как уменьшить шаг "сетки" системных тиков вплоть до 10 мксек. (в 6.2), и про "грабли" которые вас при этом подстерегают:
- во-первых - это глобальная установка "масштаба жизни" системы, и никто кроме вас "ручками" (кроме перезагрузки

) его не восстановит;
- при последовательном снижении интервала тика вы можете (неожиданно и без всяких предупреждений) дойти до значения, которое глухо уничтожает систему (здесь правильно говорить именно об уничтожает, а не "завешивает", и почему - тоже есть в статье...). Я никогда не видел такого "плотного" висения QNX, если я скажу, что и выдёргивание сетевого шнура не выводит её из ступора - то это будет несколько преувеличением

, но близко к тому...
- что противнее: то граничное значение тика, при котором это может случаться - не зависит однозначно от частоты процессора... Для быстрых (>300-400Мгц) компов это может быть и неактуально, но представьте перенос таких приложений в embedded на promPC (а там всё не так быстро), которые просто "убивают" комп ... Не понимая обсуждаемых деталей службы времени, я думаю, что "отлаживать" такую ситуацию вы будете долго

В общем ... пользуйтесь ...
P.S.Поскольку, отвечая на одни вопросы, статья ставит ещё больше других, а ещё и потому, что это экспериментальный материал - там может быть много неточностей, некорректных толкований наблюдаемого ... и т.д. Я бы был очень признателен всем, у кого возникнут даже сомнения в сказанном (не говоря о том, что найдена ошибка), если бы мне об том сообщали: либо по мэйлу, либо подняв обсуждения в соответствующих темах форума.
[ Это Сообщение было отредактировано: Olej в 2002-10-25 10:46 ]