工作佇列的實現

2021-04-23 06:21:15 字數 635 閱讀 1721

工作佇列(work queue)是另外一種將工作推後執行的形式。工作佇列可以把工作推後,交由乙個核心執行緒去執行----這個下半部分總是會在程序上下文執行。這樣,通過工作佇列執行的**能佔盡程序上下文的所有優勢。最重要的就是工作佇列允許重新排程甚至是睡眠。

如果推後執行的任務需要睡眠,那麼就選擇工作佇列;如果推後執行的任務不需要睡眠,那麼就選擇軟中斷或tasklet。實際上,工作佇列通常可以用核心執行緒替換。但那是由於核心開發者們非常反對建立新的核心執行緒,所以推薦使用工作佇列。如果需要用乙個可以重新排程的實體來執行你的下半部處理,應該使用工作對列。它是唯一能在程序上下文執行的下半部實現的機制,也只有它才可以睡眠。這意味著在你需要獲得大量的記憶體時、在你需要獲取訊號量時,在你需要執行阻塞式的i/o操作時,它都會非常有用。如果你不需要用乙個核心執行緒來推後執行工作,那麼就考慮使用tasklet吧。

下面介紹工作佇列的實現

工作佇列子系統是乙個用於建立核心執行緒的介面,通過它建立的程序負責執行由核心其他部分排到佇列的任務。它建立的這些核心執行緒被稱作工作者執行緒(worker thread)。工作佇列可以讓驅動程式建立乙個專門的工作者執行緒來處理需要推後的工作。不過,工作對壘子系統提供了乙個預設的工作者執行緒來處理這些工作。因此,工作佇列最基本的表現形式就轉變成了乙個把需要推後執行的任務交給特定的通用執行緒這樣一種介面。

工作佇列實現機制 一

walle project android 2.2 and linux 2.6.32 一 工作項 工作佇列和工作者執行緒 把推後執行的任務叫做工作 work 描述它的資料結構為work struct,這些工作以佇列結構組織成工作佇列 workqueue 其資料結構為workqueue struct,...

工作佇列分析

一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...

工作佇列模型

workqueue,中文稱其為工作佇列,是乙個用於建立核心執行緒的介面,通過它建立的核心執行緒來執行核心其他模組排列到佇列裡的工作,建立的核心執行緒被稱為工作者執行緒。要理解工作佇列的實現,重點在於理解相關的三個資料結構的含義及關係。1 表示工作佇列型別的資料結構 struct workqueue ...