tasklet和workqueue有什么区别
我是一个Linux设备驱动程序新手,并且想知道tasklet
和workqueue
之间的确切区别。 另外我也有以下疑问:
Tasklets :
工作队列 :
底线是:使用tasklet实现高优先级,低延迟原子任务,这些任务必须仍然在硬IRQ环境之外执行。
你可以使用tasklet_hi_enable
/ tasklet_hi_schedule
(而不是它们各自的_hi
版本)来控制一些优先级。 从这个IBM页面:
正常优先级调度通过TASKLET_SOFTIRQ级softirq执行,其中高优先级是通过HI_SOFTIRQ级softirq。
...
来自高优先级矢量的Tasklet首先被服务,然后是法向矢量上的服务。 请注意,每个CPU都维护自己的正常和高优先级softirq向量。
随着工作队列,创建一个时,你将使用alloc_workqueue
( create_workqueue
已废弃),并可以通过一个标志,要求更高的优先级:
WQ_HIGHPRI:
highpri wq的工作项排入目标gcwq的highpri线程池。 Highpri线程池由具有较高级别的工作线程提供服务。
请注意,普通和高优先级线程池不会相互影响。 每个人都保持其独立的工作人员队伍,并在其工作人员中实施并发管理。
我无法回答你所有的问题,但我希望这有助于你。
链接地址: http://www.djcxy.com/p/84791.html