日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

linux内核中,工作队列和线程有什么区别?

發(fā)布時(shí)間:2023/12/1 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 linux内核中,工作队列和线程有什么区别? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

work queue是一種bottom half,中斷處理的后半程,強(qiáng)調(diào)的是動(dòng)態(tài)的概念,即work是重點(diǎn),而queue是其次。

wait queue是一種「任務(wù)隊(duì)列」,可以把一些進(jìn)程放在上面睡眠等待某個(gè)事件,強(qiáng)調(diào)靜態(tài)多一些,重點(diǎn)在queue上,即它就是一個(gè)queue,這個(gè)queue如何調(diào)度,什么時(shí)候調(diào)度并不重要 等待隊(duì)列在內(nèi)核中有很多用途,尤其適合用于中斷處理,進(jìn)程同步及定時(shí)。這里只說(shuō),進(jìn)程經(jīng)常必須等待某些事件的發(fā)生。例如,等待一個(gè)磁盤操作的終止,等待釋放系統(tǒng)資源,或者等待時(shí)間經(jīng)過(guò)固定的間隔。等待隊(duì)列實(shí)現(xiàn)了在事件上的條件等待,希望等待特定事件的進(jìn)程把放進(jìn)合適的等待隊(duì)列,并放棄控制權(quán)。因此。等待隊(duì)列表示一組睡眠的進(jìn)程,當(dāng)某一條件為真時(shí),由內(nèi)核喚醒進(jìn)程。等待隊(duì)列由循環(huán)鏈表實(shí)現(xiàn),其元素包括指向進(jìn)程描述符的指針。每個(gè)等待隊(duì)列都有一個(gè)等待隊(duì)列頭,等待隊(duì)列頭是一個(gè)類型為wait_queue_head_t的數(shù)據(jù)結(jié)構(gòu)。等待隊(duì)列鏈表的每個(gè)元素代表一個(gè)睡眠進(jìn)程,該進(jìn)程等待某一事件的發(fā)生,描述符地址存放在task字段中。然而,要喚醒等待隊(duì)列中所有的進(jìn)程有時(shí)并不方便。例如,如果兩個(gè)或多個(gè)進(jìn)程在等待互斥訪問(wèn)某一個(gè)要釋放的資源,僅喚醒等待隊(duì)列中一個(gè)才有意義。這個(gè)進(jìn)程占有資源,而其他進(jìn)程繼續(xù)睡眠可以用DECLARE_WAIT_QUEUE_HEAD(name)宏定義一個(gè)新的等待隊(duì)列,該宏靜態(tài)地聲明和初始化名為name的等待隊(duì)列頭變量。init_waitqueue_head()函數(shù)用于初始化已動(dòng)態(tài)分配的wait queue head變量等待隊(duì)列可以通過(guò)DECLARE_WAITQUEUE()靜態(tài)創(chuàng)建,也可以用init_waitqueue_head()動(dòng)態(tài)創(chuàng)建。進(jìn)程放入等待隊(duì)列并設(shè)置成不可執(zhí)行狀態(tài)。工作隊(duì)列,workqueue,它允許內(nèi)核代碼來(lái)請(qǐng)求在將來(lái)某個(gè)時(shí)間調(diào)用一個(gè)函數(shù)。用來(lái)處理不是很緊急事件的回調(diào)方式處理方法.工作隊(duì)列的作用就是把工作推后,交由一個(gè)內(nèi)核線程去執(zhí)行,更直接的說(shuō)就是寫了一個(gè)函數(shù),而現(xiàn)在不想馬上執(zhí)行它,需要在將來(lái)某個(gè)時(shí)刻去執(zhí)行,那就得用工作隊(duì)列準(zhǔn)沒(méi)錯(cuò)。如果需要用一個(gè)可以重新調(diào)度的實(shí)體來(lái)執(zhí)行下半部處理,也應(yīng)該使用工作隊(duì)列。是唯一能在進(jìn)程上下文運(yùn)行的下半部實(shí)現(xiàn)的機(jī)制。這意味著在需要獲得大量的內(nèi)存時(shí)、在需要獲取信號(hào)量時(shí),在需要執(zhí)行阻塞式的I/O操作時(shí),都會(huì)非常有用。

總結(jié)

以上是生活随笔為你收集整理的linux内核中,工作队列和线程有什么区别?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。