Linux工作佇列的使用

2021-06-26 05:26:02 字數 485 閱讀 9801



1,定義工作結構體變數bat_work

static struct work_struct bat_work;

2,編寫乙個實現某功能的工作處理函式

static void wm97xx_bat_work(struct work_struct *work)

3,初始化工作佇列,

init_work(&bat_work, wm97xx_bat_work);

初始化指定工作,目的是把使用者指定的函式wm97xx_bat_work賦給work_struct的func變數。

4,對工作進行排程,

schedule_work(&bat_work);

新增入佇列的工作完成後會自動從佇列中刪除

5,cancel_work_sync(&bat_work);

取消乙個已提交給工作佇列入口項

6, flush_work_sync(&bat_work);

等待任務完成

Linux工作佇列的使用

linux工作佇列是一種把工作推後執行的機制。推後的工作交由乙個核心執行緒去執行,因此工作佇列的優勢就在於它允許重新排程甚至睡眠。使用工作佇列的流程 主要有兩種,一種使用核心預設的佇列,一種是我們自己建立乙個工作佇列。對於預設預設的工作佇列,如果工作佇列負載太重,執行效率會很低。下面是自己建立的工作...

Linux 工作佇列

工作佇列 work queue 是另外一種將工作推後執行的形式,它和tasklet有所不同。工作佇列可以把工作推後,交由乙個核心執行緒去執行,也就是說,這個下半部分可以 在程序上下文中執行。這樣,通過工作佇列執行的 能佔盡程序上下文的所有優勢。最重要的就是工作佇列允許被重新排程甚至是睡眠。那麼,什麼...

linux工作佇列

在linux核心中,對下半部 或者說推後執行的工作 的處理方式有好幾種,包括bh bottom half 軟中斷,tasklets和工作佇列等等。在2.6核心中,大名鼎鼎的bh處理被廢除,新增了更方便的工作佇列。工作佇列的方便之處在於它把工作推後,交由乙個核心執行緒去執行,這個核心執行緒總會在程序上...