我是一个Linux设备驱动程序新手,我想知道tasklet和workqueue之间的确切区别。我有以下疑问:
发布于 2013-08-19 20:53:53
Tasklet
工作队列
底线是:为高优先级、低延迟的原子任务使用tasklet,这些任务仍然必须在硬IRQ上下文之外执行。
您可以使用tasklet_hi_enable/tasklet_hi_schedule (而不是它们各自的非_hi版本)来控制线程的优先级级别。来自this IBM page
正常优先级调度通过TASKLET_ softirq级别的软HI执行,其中高优先级通过HI_ softirq级别的软HI执行。 ..。 首先服务高优先级向量的微线程,然后是法线向量上的微线程.请注意,每个CPU维护自己的正常和高优先级的软向量。
对于工作队列,在创建工作队列时,您将使用alloc_workqueue (不推荐使用create_workqueue)和can pass a flag来请求更高的优先级:
WQ_HIGHPRI: highpri的工作项排队到目标gcwq的highpri线程池。Highpri线程池由高级别的工作线程提供。 注意,普通线程池和highpri线程池不会相互交互。它们各自维护各自的员工池,并在员工之间实现并发管理。
我不能回答你所有的问题,但我希望这能帮上忙。
https://stackoverflow.com/questions/18321858
复制相似问题