Здравствуйте, gear nuke, Вы писали:
GN>Здравствуйте, Pzz, Вы писали:
Pzz>>Задержку (без цикла ожидания) можно заказать с точностью до следующего Pzz>>таймерного прерывания. Я не знаю всех деталей, но думаю, что маленькие Pzz>>задержки Форточки отрабатывают циклом ожидания, а большие — с помощью Pzz>>прерываний от таймера.
GN>AFAIK все задержки, о которых можно попросить ОС, завязаны не планировщике, а он — на таймере.
А таймер на аппаратуре, а аппаратура не может дать точность выше 1 микросекунды теоретически и примерно выше 10 микросекунд проактически... Так что как минимум заявление о 100 наносекундах ни что иное как декларация отдела маркетинга Microsoft...
GN>Если где-то и есть циклы задержек — только в дровах, и то на очень небольшие промежутки времени.
С чего вы взяли, что они будут небольшие?
Ещё раз вам завяляю: в своё время мной был поставлен эксперимент, насколько будет различаться теоретическая аппаратная точность (1 микросекунда) от практической... При проведении эксперимента между программой замерителем и аппаратурой был самый минимму другого софта, по сути его не было вообще — программа работала под ДОС и напрямую обращалась к аппаратному таймеру и контроллеру прерываний. Итог проверки: реально удалось получить точность в 10 микросекунд. Это при условии отсутствия влияния ОС!
А вы утверждаете, что такая ОС как Windows практически никак не повлияет на эти временные задержки...
Спешу вас разочаровать... как минимум на этих же таймерах (читай на тех же аппаратных прерываниях или возможно на неких других прерывниях но с IRQL точно не ниже аппаратного таймера) будут висеть две весьма ресурсоёмкие части системы:
1) планировщик задач;
2) спуллер памяти.
Они точно будут конкурировать с таймером (более чем уверен — отрабатывать они будут раньше таймера) и вносить такие временные погрешности, которые в итоге и будут отражаться в те самые пресловутые 20мс...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.