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