在linux内核中何时使用内核线程与工作队列

在linux内核中有许多方法来安排工作:计时器、微线程、工作队列和内核线程。什么时候使用一个与另一个的准则是什么

有一些明显的因素:计时器函数和微线程不能休眠,因此它们不能等待互斥体、条件变量等

在选择驾驶员的哪种机制时,还有哪些其他因素

哪些是首选机制

softirqs:延迟工作在中断上下文中运行
微线程:延迟的工作在中断上下文中运行
工作队列:流程上下文中的延迟工作运行
SoftIRQ:相同类型的SoftIRQ可以在多个CPU上并发运行。
微线程:不同类型的微线程可以在多个CPU上同时运行,但同一类型的微线程不能。
工作队列:可以在不同的CPU上同时运行
无法入睡
微线程:无法入睡
工作队列:可以进入睡眠状态
软件IRQ:不能被抢占/计划
微线程:不能被抢占/调度
工作队列:可能被抢占/计划
软件:不容易使用
微线程:易于使用
工作队列:易于使用

发表评论