|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.03.2013, 04:23 | #1 |
Регистрация: 19.02.2012
Сообщений: 5
|
Windows таймер с точностью до микро(нано)секунд с callback-функцией.
Здравствуйте!
Собственно, нужно отcчитывать короткие промежутки времени - в микросекундах (а лучше - в наносекундах) - и по истечении времени вызывать мою функцию. Пишу в Visual Studio 2012. Гугль ничего подходящего не выдал, однако, нашел реализацию на C#, а также для Linux. Может кто подскажет, нет ли готового решения? |
23.03.2013, 08:11 | #2 |
Форумчанин
Регистрация: 24.12.2012
Сообщений: 639
|
Виндовс не система реального времени. Максимум, что можно получить это http://msdn.microsoft.com/ru-RU/libr...(v=vs.85).aspx и rdtsc. Но учтите, что фиксированныо 13 микросекунд (например) вы не получите.
ICQ: 677936656 Gmail: ekEmbed@gmail.com
|
23.03.2013, 11:40 | #3 | |
Старожил
Регистрация: 16.12.2011
Сообщений: 2,329
|
Цитата:
1. Поскольку виндовс не является системой реального времени, то точность таймера все равно скачет. Однако, это официально признанная максимально возможная точность таймера. 2. У меня уже есть готовое решение под виндовс, однако мне по задаче нужно кросс-платформенное решение для компилятора вижал студии и гцц. 3. Пользователь задает(получает) время в секундах, хотя внутренняя реализация оперирует микросекундами (линукс), и тактами процессора (виндовс) Если есть такое пожелание: можно добавить поддержку микросекунд. Тогда пользователь по желанию сможет оперировать таймером в секундах, или в микросекундах. (сейчас секунды можно просто конвертировать в микросекунды) 4. Если некогда ждать, то под виндовс могу прям щас сырую недоделку выложить (работает только под виндовс). 5. Если подождешь (ориентировочно - 1-3 часа), тогда я могу выложить кросс-платформенный таймер (компиляторы вижал студии/гцц) протестированные пакетом гугл-тестов. 6. Есть поддержка добавления простейшей колл-бэк функции. Свободная функция, имеющая прототип вида: void Event(const Timer& timer); При срабатывании будильника, таймер запустит функцию пользователя, и в качестве аргумента передаст туда самого себя. (указывать коллбек не обязательно). 7. Если есть пожелание: для 11 стандарта можно добавить колл-бек с возможностью нацеливаться на методы классов. 8. Через 3-4 недели у меня будет время допилить механизм "коннектор", который является делегатом, и умеет нацеливаться на любые функции/методы и для 2003 и для 11 стандартов. И я добавлю уже полноценную поддержку колл-бека. Последний раз редактировалось _Bers; 23.03.2013 в 11:43. |
|
23.03.2013, 12:31 | #4 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
во-первых - туточки, во-вторых - то что не realtime os это еще полбеды, почему так мелочитесь - нано, давайте уже пико (при том, что ГТИ на материнке не термостатирован и там далеко не DDS)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
24.03.2013, 18:40 | #5 |
Регистрация: 19.02.2012
Сообщений: 5
|
|
24.03.2013, 18:50 | #6 | |
Регистрация: 19.02.2012
Сообщений: 5
|
Цитата:
|
|
24.03.2013, 18:58 | #7 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...дочитайте тему до конца, пост.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
24.03.2013, 22:53 | #8 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
а зачем, если не секрет, вообще нужно знать время настолько точно?
знаю только, что OpenGL на некоторых видеокартах может время мерять в наносекундах, но только для оценки производительности шейдера, либо для синхронизации выполнения шейдера. |
24.03.2013, 23:15 | #9 |
Старожил
Регистрация: 29.09.2009
Сообщений: 9,713
|
...некоторые с железяками работают.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation |
24.03.2013, 23:24 | #10 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
а на железяках своих таймеров нет? в драйвере обработчик на событие железяки не прописать с каким-нибудь приоритетным IRQ левелом?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
программирование микро контроллеров | revaldo666 | Общие вопросы C/C++ | 10 | 22.05.2012 23:20 |
вызов callback | Vistar | Общие вопросы .NET | 9 | 24.10.2010 14:49 |
Callback из dll - как? | flug | Общие вопросы Delphi | 2 | 30.09.2010 13:13 |
Проблема с Микро СД | DRAGGER | Компьютерное железо | 1 | 21.10.2009 08:52 |
Callback | Wolfheart | Win Api | 12 | 02.06.2007 23:13 |