Здравствуйте.
Требуется задавать задержку выполнения операций в программе/потоке с точностью до +/-25 микросекунд.
В Windows-программе я для этого использовал QueryPerformanceFrequency + QueryPerformanceCounter.
А как это сделать в lazaruse под Linux?
Установка задержки в микросекундах
Модератор: Модераторы
http://www.freepascal.org/docs-html/rtl ... ofday.html
http://www.freepascal.org/docs-html/rtl ... meval.html
fpGetTimeOfDay забирает нынешнее время в тип timeval, разбивая на секунды и микросекунды.
задержку можно устраивать, как while, выход из которого будет разница во времени.
http://www.freepascal.org/docs-html/rtl ... meval.html
Код: Выделить всё
var
tval : timeval;
begin
fpGetTimeOfDay(@tval,nil);
end;
fpGetTimeOfDay забирает нынешнее время в тип timeval, разбивая на секунды и микросекунды.
задержку можно устраивать, как while, выход из которого будет разница во времени.
Я похоже полный нуб - не понимаю как их объявить и вызвать
Добавлено спустя 1 час 3 минуты 29 секунд:
Или данная функция вызывается только под Linux, а под Windows нужные модули не подключаются?
Добавлено спустя 1 час 3 минуты 29 секунд:
Или данная функция вызывается только под Linux, а под Windows нужные модули не подключаются?
Обычно для этих целей используется REAL TIME операционная система.
В Windows такую задежку гарантированно сделать невозможно. System Clock Windows = 1kHz = 1ms.
В Linux надо установить RT PREEMPT ядро. System Clock RT PREEMPT = 1MHz = 1microsec. и использовать функцию fpnanosleep.
Опишите для чего нужна подобная задержка, что бы дать правильный ответ.
В Windows такую задежку гарантированно сделать невозможно. System Clock Windows = 1kHz = 1ms.
В Linux надо установить RT PREEMPT ядро. System Clock RT PREEMPT = 1MHz = 1microsec. и использовать функцию fpnanosleep.
Опишите для чего нужна подобная задержка, что бы дать правильный ответ.
- Лекс Айрин
- долгожитель
- Сообщения: 5723
- Зарегистрирован: 19.02.2013 16:54:51
- Откуда: Волгоград
- Контактная информация:
mig-31 писал(а):В Windows такую задежку гарантированно сделать невозможно. System Clock Windows = 1kHz = 1ms.
так уж и невозможно?
http://rsdn.ru/forum/winapi/4159851.all
Дело не в таймере, а в операционке, которая должна обрабатывать например прерывания.
