Проблема:
Функция DelayTicks (длинные тики) используется для создания точных задержек:
Код: Выделить всё
private void DelayTicks(long ticks)
{
var start = Stopwatch.GetTimestamp();
while (Stopwatch.GetTimestamp() - start < ticks)
{
// Busy wait
}
}
Окружающая среда:
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