日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
解析Linux等待隊(duì)列的運(yùn)用(linux等待隊(duì)列的使用)

linux作為一種操作系統(tǒng),等待隊(duì)列機(jī)制在內(nèi)核中發(fā)揮著非常重要的作用。比如,在處理臨界區(qū)的訪問,需要實(shí)現(xiàn)消息循環(huán),消息隊(duì)列管理異步事件等情況,都需要用到等待隊(duì)列。其工作方式是,當(dāng)發(fā)生請求時(shí),會(huì)根據(jù)狀態(tài)和目的地址,將請求加入等待隊(duì)列中,等待cpu執(zhí)行。

創(chuàng)新互聯(lián)企業(yè)建站,十多年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁中充分展現(xiàn),通過對客戶行業(yè)精準(zhǔn)市場調(diào)研,為客戶提供的解決方案。

下面,我們就以Linux系統(tǒng)為例,來介紹一下等待隊(duì)列的運(yùn)用。首先,要了解等待隊(duì)列,需要分析和理解內(nèi)核操作系統(tǒng)中的代碼,下面以一段核心模塊的常用函數(shù)__wait.on_bit()為例,介紹一下它的運(yùn)用和實(shí)現(xiàn)的步驟:

void __wait_on_bit(struct wait_queue_head *WQ, struct wait_queue_entry *wq_entry,int (*action)(struct wait_queue_entry *))
{
struct wait_queue *wait;
signed long timeout;

//注冊要等待的wait queue
wait = prepare_to_wait_exclusive(wq, wq_entry, TASK_UNINTERRUPTIBLE);
timeout = MAX_SCHEDULE_TIMEOUT;

//釋放wq->lock鎖
smp_mb();

//等待隊(duì)列條件滿足
while (!(*action)(wq_entry)) {
timeout = io_schedule_timeout(timeout);
wait_io_event_timeout(wq_entry, timeout);
//重新獲得wq->lock
smp_mb();
if (signal_pending_state(TASK_UNINTERRUPTIBLE, wq_entry->private))
break;
}
//結(jié)束wait并獲取wq->lock
finish_wait(wq, wait);
}

這段代碼的框架如下:首先,需要注冊一個(gè)進(jìn)入等待的隊(duì)列wait,隨后會(huì)獲取超時(shí)時(shí)間timeout,然后釋放鎖wq->lock,同時(shí)檢查等待條件是否滿足。如果滿足,則調(diào)用io_schedule_timeout()方法進(jìn)行超時(shí)處理;如果不滿足,通過wait_io_event_timeout()方法進(jìn)行等待,直到條件滿足時(shí)才結(jié)束等待。最后,重新獲得wq->lock,等待結(jié)束。

以上,就是Linux等待隊(duì)列的運(yùn)用,從而實(shí)現(xiàn)臨界區(qū)的處理,信號的傳遞以及消息的處理等功能。其中,需要特別注意的是,wait中的隊(duì)列,在進(jìn)行wait_io_event_timeout()操作前,要保證能夠獲得可執(zhí)行的lock,以保證在等待過程中的安全性。

創(chuàng)新互聯(lián)網(wǎng)絡(luò)推廣網(wǎng)站建設(shè),網(wǎng)站設(shè)計(jì),網(wǎng)站建設(shè)公司網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),1500元定制網(wǎng)站優(yōu)化全包,先排名后付費(fèi),已為上千家服務(wù),聯(lián)系電話:13518219792


當(dāng)前標(biāo)題:解析Linux等待隊(duì)列的運(yùn)用(linux等待隊(duì)列的使用)
文章來源:http://www.dlmjj.cn/article/coosdhs.html