![]() |
1
28
正如你所说,这取决于手头的任务: 工作队列将工作延迟到内核线程中-您的工作将始终在进程中运行 语境。它们是可调度的,因此可以睡觉。 通常,工作队列或SOTFTIRQ/微线程之间没有争论;如果延迟的工作需要睡眠,则使用工作队列,否则使用软IRQ或微线程。微线程也更适合于中断处理(它们得到了某些保证,例如:微线程的运行时间永远不会晚于下一个时间点,它总是针对自身进行序列化等)。 当您确切地知道您希望什么时候发生,并且不希望同时中断/阻塞进程时,内核计时器是很好的。它们在进程上下文之外运行,而且它们对于其他代码也是异步的,因此如果不小心的话,它们就是竞争条件的来源。 希望这有帮助。 |
![]() |
2
31
SOFTIRQ:在中断上下文中延迟工作运行 微线程:在中断上下文中延迟工作运行 工作队列:进程上下文中延迟的工作运行 SoftIRQ:不能在不同的CPU上同时运行 微线程:不能在不同的CPU上同时运行 工作队列:可以在不同的CPU上同时运行 软IRQ:无法进入睡眠状态 微线程:无法进入睡眠状态 工作队列:可以进入睡眠状态 SOFTIRQ:不能被抢占/调度 微线程:不能被抢占/调度 工作队列:可能被抢占/调度 SoftIRQ:不易使用 微线程:易于使用 工作队列:易于使用 |
![]() |
3
1
内核线程是工作队列的基础。它们是在进程上下文中运行的内核助手例程的唯一类型。 |
![]() |
CaTx · 使用带有一个大于号和两个大于号的回波的区别 2 年前 |
![]() |
Ari157 · x86_64 Linux程序集中的逻辑与实现 2 年前 |
![]() |
Ty Q. · 分段故障GLFW3/GLAD 2 年前 |
![]() |
ShortArrow · 如何使用git管理链接源文件? 2 年前 |
![]() |
Bastien L. · 多Linux Grafana集成 2 年前 |