Задержка на основе секундомера несовместима на Linux-ARM по сравнению с WindowsLinux

Ответить Пред. темаСлед. тема
Anonymous
 Задержка на основе секундомера несовместима на Linux-ARM по сравнению с Windows

Сообщение Anonymous »

Я работаю над проектом, в котором использую секундомер для точного отслеживания задержек в .NET. Приложение работает безупречно в Windows, но когда я запускаю его на платформе Linux-ARM (например, Orange Pi), время кажется нестабильным.
Проблема:
Функция DelayTicks (длинные тики) используется для создания точных задержек:

Код: Выделить всё

private void DelayTicks(long ticks)
{
var start = Stopwatch.GetTimestamp();
while (Stopwatch.GetTimestamp() - start < ticks)
{
// Busy wait
}
}
В Windows задержки соответствуют ожиданиям. Однако в Linux-ARM задержка либо длиннее, либо короче, чем должна быть, что приводит к проблемам в приложениях, критичных по времени, таких как отправка данных Art-Net.
Окружающая среда:
Windows: точное поведение
Linux-ARM: несогласованное время
Версия .NET: [укажите версию, например, .NET 7]
Устройство: оранжевый Pi
Что я пробовал:
Проверено Stopwatch.IsHighResolution — верно на обеих платформах.
Скорректирован расчет продолжительности тика с помощью Stopwatch.Frequency.
Попытка использовать Task.Delay или Thread.Sleep для задержек, но они не обеспечивают точность, необходимую для приложения.
Вопросы:
Есть ли какие-либо известная проблема с секундомером или таймерами с высоким разрешением на платформах Linux-ARM?
Есть ли лучшие альтернативы для достижения точных задержек на Linux-ARM?
Может ли это быть связано с тем, как ядро ​​Linux обрабатывает таймеры с высоким разрешением? ?
Будем очень признательны за любые рекомендации или альтернативные подходы!

Подробнее здесь: https://stackoverflow.com/questions/793 ... to-windows
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Linux»