Вызов функции с частотой 2000 раз в секунду
От: Slepchenkov Украина  
Дата: 06.04.07 07:47
Оценка:
В принципе вопрос в теме.

У меня есть WinXP приложение.
Мне нужно вызывать некоторую функцию с частотой 2000 раз в секунду (т.е. на подобе прерывания по таймеру).
Сообщения WM_TIMER неподходят по определению.
Есть ли какой способ под WinXp реализовать это?

Буду благодарен за любую помощь.
Re: Вызов функции с частотой 2000 раз в секунду
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.04.07 08:08
Оценка:
Здравствуйте, Slepchenkov, Вы писали:

S>У меня есть WinXP приложение.

S>Мне нужно вызывать некоторую функцию с частотой 2000 раз в секунду (т.е. на подобе прерывания по таймеру).

Можете, конечно, побаловаться с Waitable Timers, там время задается в 100-наносекундных интервалах, но только зря потратите время. Единственный способ обеспечить точность такого порядка в user-mode — это поднять приоретет потока и крутить цикл без ожидания, отмеряя время посредством TSC или QueryPerformanceCounter. Разумеется, накладные расходы это создаст дикие, поэтому на однопроцессорной машине работать будет только этот поток, и практически ничего больше.

А если Вы из этого потока попытаетесь работать с файлами/окнами и другими сложными объектами — готовьтесь к паузам в единицы, а то и десятки миллисекунд.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Вызов функции с частотой 2000 раз в секунду
От: Аноним  
Дата: 06.04.07 08:24
Оценка:
S>Есть ли какой способ под WinXp реализовать это?
WinXP не real-time OS. Вам в QNX
Re[2]: Вызов функции с частотой 2000 раз в секунду
От: gear nuke  
Дата: 06.04.07 12:53
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

[]

ЕМ>накладные расходы это создаст дикие, поэтому на однопроцессорной машине работать будет только этот поток, и практически ничего больше.


Планировщик будет временами останавливать этот поток на несколько квантов, так что гарантировать 2000 раз в секунду нереально.
People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird (c) D.Knuth
Re: Вызов функции с частотой 2000 раз в секунду
От: ANM Россия  
Дата: 06.04.07 18:09
Оценка:
Здравствуйте, Slepchenkov, Вы писали:

S>Мне нужно вызывать некоторую функцию с частотой 2000 раз в секунду (т.е. на подобе прерывания по таймеру).

S>Сообщения WM_TIMER неподходят по определению.
S>Есть ли какой способ под WinXp реализовать это?

API Multimedia Timers позволяет вызывать callback с частотой до 1 кГц. Для частоты 2 кГц похоже единственный выход — цикл.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.