Точные очереди таймера в C ++ - PullRequest
0 голосов
/ 26 ноября 2011

Я разрабатываю приложение, которое должно отправлять сообщения в определенное время (это связано с мультимедиа, поэтому важна точность синхронизации), поэтому для эффективного использования мне необходим механизм для вызова функции обратного вызова за указанное количество миллисекунд.

Мне нужно поддерживать как Windows, так и Mac OS X. Я посмотрел на очереди таймеров в Windows, которые выглядят так, как мне нужно, но я прочитал, что точность синхронизации просто недостаточно точна для мультимедийных приложений (мое приложение воспринимает MIDI-сообщения водителю в определенное время). Есть идеи?

Ответы [ 2 ]

1 голос
/ 26 ноября 2011

Я думаю, что вам лучше всего использовать Windows Мультимедийные таймеры .В OS X самая простая функция для использования будет nanosleep, но вы можете пройти долгий путь с kqueue .Я не думаю, что возникнут какие-либо проблемы, если вы говорите с точностью до миллисекунд (миллисекунда это очень, очень много времени).Единственное, что вам, возможно, понадобится сделать, это убедиться, что ОС запускает ваш процесс в режиме реального времени.

0 голосов
/ 26 ноября 2011

Любая функция sleep является «наименьшей» для всех известных мне ОС.

Если в этой ОС много задач, то это зависит от планировщика этих задач.

В космосе у них есть специальное оборудование, которое выполняет простые функции из очереди - это лучшее, что вы можете получить, - и они не ограничены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...