Nuttx:为什么工作队列线程需要轮询?

时间:2018-03-10 03:17:33

标签: multithreading embedded rtos

Nuttx工作线程(LP和HP)具有轮询间隔,仅适用于工作线程0.我想知道为什么需要轮询间隔?

当有人将新作品排入工作队列时,将通知工作者线程来处理它。如果所有工作线程都忙,那么当线程完成当前工作并再次检查队列时,将处理排队的工作。

关于sched_garbage_collection()工作,工作线程由sched_signal_free()发出信号。

那么当需要轮询间隔时是什么情况?似乎信号足以确保工作线程总是被踢以处理工作。

1 个答案:

答案 0 :(得分:1)

不需要轮询。它只是作为故障保护。如果通知信号丢失,我害怕后果。当然,这将是一个错误,因为我知道没有这样的错误,我不得不说轮询是不必要的,浪费CPU周期。

另一个问题是民意调查的违约率,我记得是50 MS。事实证明,这是高利率活动之一,也是最优先的任务。您可以将其设置为低得多的速率。如果你想添加一个禁用轮询的选项,那也可能是一件好事。