Tomsk Sysadmins Forum

Windows => Программирование => Topic started by: lame on September 05, 2005, 18:58:27

Title: Вопрос по поводу real-time приложений в Windows
Post by: lame on September 05, 2005, 18:58:27
Вобщем вопрос звучит следующим образом: как в windows получить задаваемую задержку 1-15мс, при этом пользуясь стандартными апи функциями???  :unsure:

Просто насколько я знаю виндовс вообще не реалтайм ОС. В ней раз в 15мс происходит чтото вроде обновления очереди процессов (мож криво выразился, но всеже): т.е. обычному потоку происходит передача управления раз в 15мс. А как получить задержку во время меньшее, чем 15мс не знаю.
Пользовался ждущими таймерами и при задании интервала ожидания даже (по описанию) 100 нс всеравно получаю задержку в 15-16мс, даже при высшем приоритете потока. Пробовал в SetWaitableTimer указывать TimerAPCProc, однако все осталось по-прежнему(честно говоря так и не понял накой она вообще нужна, если никакой привязки к реальному системному времени у этой функции нет, и вызывается она непосредственно перед тем как передать управление потоку запустившему таймер). Есть идея по поводу того, чтобы просто в цикле проверять равенство на время: но это будет жрать процессорное время и, боюсь, что не будет работать на 100% (ОСь всеравно отберет управление).

Прошу грамотных людей откликнуться и ответить на вопрос. Особая спешка в решении данного вопроса отпала, однако стало самому интересно какже это можно сделать.

ПС: буду рад любой идее. Заранее спасибо  :)

Title: Вопрос по поводу real-time приложений в Windows
Post by: stranger on September 05, 2005, 22:45:07
Я конечно не совсем грамотный человек в этом вопросе, но что-то мне подсказывает, что делать это на не реалтам машине - это по меньшей мере бесполезно...
Конечно можно сделть подобие реалтайма за счет избыточной производительности системы, но оно может разрушиться из-за любого системного процесса виндоус...

Приоритеты системы все-равно выше любой пользовательской задачи...

Остается или делать задачу на реалтайм системе или работать только в DOS, так как тут процесс в чистом досе может быть только один. Последнее конечно то же врядли выгорит...
Title: Вопрос по поводу real-time приложений в Windows
Post by: Macik on September 07, 2005, 11:07:29
Быстрей 10 мс никак не получится :) .
Есть способ поставить собственное железо в какой-нить порт или слот, которое будет генерить прерывание с частотой 1-10кГц и ждать их в потоке.
У нас получалось даже с Com-порта. Махали с генератора в какую-то линию(не помню в какую) и получали частоту WaitCommEvents порядка 10 кГц.
Если эт действительно надо.........
Title: Вопрос по поводу real-time приложений в Windows
Post by: rzq on May 11, 2006, 12:28:48
Можно, если использовать Multimedia Timers