2011-02-18 40 views
3

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

回答

7

事件工作线程需要复用很多任务,所以不允许阻止它(在单个任务中调用schedule())。但是有很多任务需要阻塞(等待磁盘,网络,某些设备等),并且内核中有很多功能在内部阻塞(如信号量或内存分配)。这些函数只能在系统调用或专用内核线程内代表userland运行。

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