linux - Linux 中的工作线程

标签 linux operating-system linux-kernel linux-device-driver

为什么有时需要创建新的工作线程来执行可延迟的工作函数,而不是仅仅将其调度在默认的“events/n”内核工作线程上?

最佳答案

事件工作线程需要多路复用多个任务,所以不允许阻塞它(在单个任务中调用 schedule())。然而,有许多任务需要阻塞(等待磁盘、网络、某些设备等),并且内核中有许多函数在内部阻塞(如信号量甚至内存分配)。此类函数只能代表用户空间在系统调用或专用内核线程中运行。

虽然理论上可以将此类代码重写为一长串事件,但这会使它变得复杂且不可维护,并且内核线程的开销非常小。

关于linux - Linux 中的工作线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5038458/

相关文章:

C 使用汇编 : operand type mismatch for push

linux - 在 Dart 中解码 ANSI 转义序列

linux - 工作负载计划程序(TWS CTRL-M替代品)

java - 通过 php 启动和停止 minecraft(java 进程)

linux - 如何在linux内核中测试地址是虚拟的还是逻辑的?

linux - 在 Linux 上查找内核是 32 位还是 64 位

c - OpenSSL 链接未定义引用 'EVP_MD_CTX_new' 和 '...fre'

c - 来自在子进程中使用 exec 运行的文件的两种方式通信

java - 如何通过java程序获取系统登录时间

c - 在哪里可以找到例如 netlink 的源代码?