У меня есть поток, работающий в системе Linux, который мне нужно выполнять с максимально возможной периодичностью.Например, выполнять один раз каждые мс.
В настоящее время это делается путем создания таймера с
timerfd_create(CLOCK_MONOTONIC, 0)
, а затем передачи желаемого времени ожидания в структуре с помощью
timerfd_settime (fd, 0, &itval, NULL);
Блокирующий вызов чтения выполняется на этом таймере, который останавливает выполнение потока и сообщает о потерянных вызовах пробуждения.
Проблема заключается в том, что на более высоких частотах система начинает терять сроки, даже если загрузка ЦП ниже 10%.Я думаю, что это связано с тем, что планировщик не будит поток достаточно часто, чтобы проверить блокирующий вызов.Есть ли команда, которую я могу использовать, чтобы сказать планировщику разбудить поток через определенные промежутки времени, насколько это возможно?Ожидание занятости является плохим вариантом, поскольку система выполняет множество других задач.
Спасибо.