2011-02-18 73 views
3

爲什麼有時需要創建新的工作線程來執行可延遲的工作函數,而不是僅僅在默認的「events/n」內核工作線程上安排它?Linux中的工作線程

回答

7

事件工作線程需要複用很多任務,所以不允許阻止它(在單個任務中調用schedule())。但是有很多任務需要阻塞(等待磁盤,網絡,某些設備等),並且內核中有很多功能在內部阻塞(如信號量或內存分配)。這些函數只能在系統調用或專用內核線程內代表userland運行。

雖然理論上可以將這些代碼重寫爲一長串事件,但它會使其變得複雜且不可維護,並且內核線程的開銷非常小。