Author Topic: Вопрос по поводу real-time приложений в Windows  (Read 3428 times)

0 Members and 1 Guest are viewing this topic.

Offline lame

  • Newbie
  • *
  • Posts: 1
  • Karma: +0/-0
Вобщем вопрос звучит следующим образом: как в windows получить задаваемую задержку 1-15мс, при этом пользуясь стандартными апи функциями???  :unsure:

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

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

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


Offline stranger

  • Hero Member
  • *****
  • Posts: 922
  • Karma: +0/-0
    • http://
Вопрос по поводу real-time приложений в Windows
« Reply #1 on: September 05, 2005, 22:45:07 »
Я конечно не совсем грамотный человек в этом вопросе, но что-то мне подсказывает, что делать это на не реалтам машине - это по меньшей мере бесполезно...
Конечно можно сделть подобие реалтайма за счет избыточной производительности системы, но оно может разрушиться из-за любого системного процесса виндоус...

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

Остается или делать задачу на реалтайм системе или работать только в DOS, так как тут процесс в чистом досе может быть только один. Последнее конечно то же врядли выгорит...
[span style='font-family:Geneva'][span style='font-size:8pt;line-height:100%'][span style='color:gray']Единственное условие, от которого зависит успех, есть терпение.   Л.Н.Толстой
[/span][/span][/span]

Offline Macik

  • Newbie
  • *
  • Posts: 13
  • Karma: +0/-0
Вопрос по поводу real-time приложений в Windows
« Reply #2 on: September 07, 2005, 11:07:29 »
Быстрей 10 мс никак не получится :) .
Есть способ поставить собственное железо в какой-нить порт или слот, которое будет генерить прерывание с частотой 1-10кГц и ждать их в потоке.
У нас получалось даже с Com-порта. Махали с генератора в какую-то линию(не помню в какую) и получали частоту WaitCommEvents порядка 10 кГц.
Если эт действительно надо.........

Offline rzq

  • Newbie
  • *
  • Posts: 3
  • Karma: +0/-0
Можно, если использовать Multimedia Timers