Ban*_*oot 3 linux operating-system linux-device-driver linux-kernel
为什么有时需要创建新的工作线程来执行可延迟的工作函数,而不是仅仅在默认的"events/n"内核工作线程上调度它?
事件工作者线程需要复用许多任务,因此不允许阻塞它(在单个任务中调用schedule()).但是,有许多任务需要阻塞(等待磁盘,网络,某些设备等),内核中有很多内部阻塞的功能(如信号量甚至内存分配).此类函数只能在系统调用或专用内核线程中代表userland运行.
虽然理论上可以将这样的代码重写为一长串事件,但它会使它变得复杂且不可维护,并且内核线程的开销非常小.