Лучшее, на что вы можете надеяться в обычных Windows, - это «обычно соответствует требованиям времени». Если в системе выполняются какие-либо процессы, кроме вашего целевого приложения, будет время от времени пропускать сроки из-за несоответствий в расписании. Однако, если ваше приложение / оборудование может справляться с редкими, но случайными промахами, есть несколько способов уменьшить количество промахов.
- Установите приоритет вашего процесса на REALTIME_PRIORITY_CLASS
- Измените гранулярность планировщика на разрешение 1 мс с помощью функции
timeBeginPeriod()
(часть библиотек Windows Multimedia)
- Избегайте как можно большего количества системных вызовов в главном цикле (включая распределение памяти). Каждый системный вызов - это возможность для ОС перевести процесс в спящий режим и, следовательно, возможность для недетерминированного планировщика пропустить следующий срок
Если это не сделает вашу работу за вас, вы можете попробовать дистрибутив Linux с применением исправлений ядра в реальном времени. Я обнаружил, что они обеспечивают почти идеальное время (в течение 10 секунд с точностью до микросекунд в течение нескольких часов). Тем не менее, ничто иное, как настоящая ОС реального времени, не даст вам совершенства, но дистрибутивы Linux реального времени на намного ближе, чем обычные Windows.