我有一个线程运行在Linux系统上,我需要像possbile一样以精确的间隔执行。例如。每ms执行一次。Linux,需要精确的编程时序。调度程序唤醒程序
目前,这是通过创建与
timerfd_create(CLOCK_MONOTONIC, 0)
定时器,然后使所期望的睡眠时间在一个结构与
timerfd_settime (fd, 0, &itval, NULL);
一种阻塞读呼叫所做的是在此计时器其停止执行线程执行并报告唤醒呼叫丢失。
问题是,在较高的频率下,即使CPU使用率低于10%,系统也会开始丢失最后期限。我认为这是由于调度程序没有足够频繁地唤醒线程来检查阻塞呼叫。有没有一个命令可以用来告诉调度程序在可能的时间间隔内以特定间隔唤醒线程? 由于系统处理许多其他任务,忙等待是一个不好的选择。
谢谢。
你在实时调度器上运行这个吗?根据我的经验,只要你的内核没有任何坏行为的驱动程序,它应该足够好,以便在毫秒量级的时间间隔内完成。 (当然,Linux不是专业的RTOS,并不能保证你永远不会错过最后期限。) – 2011-06-10 14:58:21