Workqueue機制的實現

2022-04-30 15:54:14 字數 856 閱讀 3896

workqueue機制中定義了兩個重要的資料結構,分析如下:

cpu_workqueue_struct結構。該結構將cpu和核心執行緒進行了繫結。在建立workqueue的過程中,linux根據當前系統cpu的個數建立cpu_workqueue_struct。在該結構主要維護了乙個任務佇列,以及核心執行緒需要睡眠的等待佇列,另外還維護了乙個任務上下文,即task_struct。

work_struct結構是對任務的抽象。在該結構中需要維護具體的任務方法,需要處理的資料,以及任務處理的時間。該結構定義如下:

struct work_struct ;

void my_func(struct work_struct *work)

struct my_work_t *my_work =container_of(work, struct my_work_t, work);

printk(kern_info 「hello world, my name is %s!/n」, my_work->name);

}struct workqueue_struct *my_wq = create_workqueue(「my wq」);      //建立自己的work queue

struct my_work_t my_work;

my_work.name = 「jack」;

init_work(&(my_work.work), my_func);          //初始化自己的work queue

queue_work(my_wq, &(my_work.work));

destroy_workqueue(my_wq);                     //銷毀自己的work queue

Workqueue機制的實現

workqueue機制的實現 2012 02 05 22 18 標籤 workqueue 分類 linux裝置驅動模型 workqueue機制中定義了兩個重要的資料結構,分析如下 cpu workqueue struct結構。該結構將cpu和核心執行緒進行了繫結。在建立workqueue的過程中,l...

linux中workqueue的實現機制

linux 中的workqueue 機制就是為了簡化核心執行緒的建立。通過呼叫 workqueue 的介面就能建立核心執行緒。並且可以根據當前系統 cpu的個數建立執行緒的數量,使得執行緒處理的事務能夠並行化。workqueue 是核心中實現簡單而有效的機制,他顯然簡化了核心 daemon 的建立,...

Linux中Workqueue機制分析

走入linux的殿堂已經有一年有餘了,在這裡我想將linux的各種實現機制分析一遍,一方面對自己來說也是溫故而知新,另一方面,促進大家的交流,最好能夠給大家一些拋磚引玉的啟迪。我是硬體出身,搞硬體已經好多年了,從是專門軟體開發也接近兩年了,在這一段時間內我越發認為軟硬體協同設計是未來發展的主流,軟硬...