Установка задержки в микросекундах

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Nikolas
новенький
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Установка задержки в микросекундах

Сообщение Nikolas »

Здравствуйте.
Требуется задавать задержку выполнения операций в программе/потоке с точностью до +/-25 микросекунд.
В Windows-программе я для этого использовал QueryPerformanceFrequency + QueryPerformanceCounter.
А как это сделать в lazaruse под Linux?
dedm0zaj
постоялец
Сообщения: 108
Зарегистрирован: 05.10.2012 19:55:20

Сообщение dedm0zaj »

http://www.freepascal.org/docs-html/rtl ... ofday.html
http://www.freepascal.org/docs-html/rtl ... meval.html

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

var
  tval    : timeval;
begin
  fpGetTimeOfDay(@tval,nil);
end;


fpGetTimeOfDay забирает нынешнее время в тип timeval, разбивая на секунды и микросекунды.
задержку можно устраивать, как while, выход из которого будет разница во времени.
Nikolas
новенький
Сообщения: 14
Зарегистрирован: 26.08.2014 13:41:37

Сообщение Nikolas »

Я похоже полный нуб - не понимаю как их объявить и вызвать

Добавлено спустя 1 час 3 минуты 29 секунд:
Или данная функция вызывается только под Linux, а под Windows нужные модули не подключаются?
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Обычно для этих целей используется REAL TIME операционная система.

В 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
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

Дело не в таймере, а в операционке, которая должна обрабатывать например прерывания.
Ответить