本發(fā)明涉及數(shù)據(jù)資源調(diào)度技術(shù)領(lǐng)域,更具體地,涉及一種系統(tǒng)任務(wù)調(diào)度方法及裝置。
背景技術(shù):
隨著科技的發(fā)展,人們的生活越來(lái)越離不開(kāi)各種各樣的互聯(lián)網(wǎng)產(chǎn)品,互聯(lián)網(wǎng)產(chǎn)品其所能提供的功能能滿足人們?cè)诓煌樾蜗碌男枨蟆?duì)于一個(gè)互聯(lián)網(wǎng)產(chǎn)品而言,往往會(huì)存在大量的用戶在同一時(shí)間段使用。用戶在使用互聯(lián)網(wǎng)產(chǎn)品的功能時(shí)所發(fā)出的任務(wù)請(qǐng)求指令,通常而言,需要使用到隊(duì)列來(lái)將用戶的請(qǐng)求堆積起來(lái),并將這些任務(wù)請(qǐng)求指令對(duì)應(yīng)的系統(tǒng)任務(wù)進(jìn)行排列,再一一進(jìn)行處理。
當(dāng)某一用戶在短時(shí)間內(nèi)頻繁地向服務(wù)器發(fā)出任務(wù)請(qǐng)求指令,就會(huì)使得隊(duì)列前面該用戶的多個(gè)請(qǐng)求占據(jù),處理起來(lái)需要花比較多的時(shí)間。而另一用戶緊接著發(fā)出任務(wù)請(qǐng)求指令后,則可能需要等待,得不到服務(wù)器及時(shí)的響應(yīng)。這種延遲的響應(yīng),會(huì)給用戶留下諸如服務(wù)器不行的印象,影響用戶的使用體驗(yàn)。
因此,業(yè)界亟需一種解決能上述問(wèn)題的技術(shù)方案。
技術(shù)實(shí)現(xiàn)要素:
為解決上述至少一個(gè)方面的問(wèn)題,本發(fā)明提出了一種系統(tǒng)任務(wù)調(diào)度方法及裝置。該系統(tǒng)任務(wù)調(diào)度方法調(diào)整了隊(duì)列的結(jié)構(gòu)和任務(wù)處理的邏輯,對(duì)用戶的任務(wù)請(qǐng)求指令對(duì)應(yīng)的系統(tǒng)任務(wù)進(jìn)行有效的調(diào)度,平衡了各個(gè)用戶之間的系統(tǒng)任務(wù)的響應(yīng)時(shí)間,使得用戶的操作能在更短的時(shí)間內(nèi)得到響應(yīng),提升了用戶的體驗(yàn)。
為了實(shí)現(xiàn)本發(fā)明的目的,采取如下技術(shù)方案:
第一方面,提供了一種系統(tǒng)任務(wù)調(diào)度方法。該系統(tǒng)任務(wù)調(diào)度方法包括:循環(huán)遍歷用于存儲(chǔ)所述系統(tǒng)任務(wù)的一級(jí)用戶隊(duì)列,在每次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),相應(yīng)將該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),以清除已被執(zhí)行的所述系統(tǒng)任務(wù),直至所有已存儲(chǔ)的系統(tǒng)任務(wù)均被執(zhí)行;
響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,在該二級(jí)任務(wù)隊(duì)列的隊(duì)尾創(chuàng)建與該任務(wù)請(qǐng)求指令相應(yīng)的系統(tǒng)任務(wù)。
具體地,所述循環(huán)遍歷用于存儲(chǔ)所述系統(tǒng)任務(wù)的一級(jí)用戶隊(duì)列的步驟與所述響應(yīng)于用戶的任務(wù)請(qǐng)求指令的步驟是并行的。
具體地,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),具體包括:
預(yù)先創(chuàng)建一級(jí)用戶隊(duì)列、一級(jí)用戶隊(duì)列中表征每個(gè)用戶的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)指向的二級(jí)任務(wù)隊(duì)列;
將所述系統(tǒng)任務(wù)添加到其相應(yīng)的二級(jí)任務(wù)隊(duì)列中;
在每一次循環(huán)中,執(zhí)行所述二級(jí)任務(wù)隊(duì)列首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。
具體地,將該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),具體包括:
修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù);
將所述隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn),以實(shí)現(xiàn)該下一循環(huán)中該節(jié)點(diǎn)作為該二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
具體地,響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,具體包括:
接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令;
響應(yīng)于用戶的任務(wù)請(qǐng)求指令,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn);
定位該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
具體地,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn)之后,還包括:
當(dāng)所述一級(jí)用戶隊(duì)列中并不存在表征該用戶的隊(duì)列節(jié)點(diǎn),為該用戶在一級(jí)用戶隊(duì)列的隊(duì)尾中創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
優(yōu)選地,當(dāng)執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列中的所有系統(tǒng)任務(wù)后,還包括:
刪除該二級(jí)任務(wù)隊(duì)列以及其所對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)。
第二方面,提供了一種裝置。該裝置包括:循環(huán)遍歷模塊,用于循環(huán)遍歷用于存儲(chǔ)所述系統(tǒng)任務(wù)的一級(jí)用戶隊(duì)列,在每次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),相應(yīng)將該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),以清除已被執(zhí)行的所述系統(tǒng)任務(wù),直至所有已存儲(chǔ)的系統(tǒng)任務(wù)均被執(zhí)行;
創(chuàng)建模塊,用于響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,在該二級(jí)任務(wù)隊(duì)列的隊(duì)尾創(chuàng)建與該任務(wù)請(qǐng)求指令相應(yīng)的系統(tǒng)任務(wù)。
具體地,所述循環(huán)遍歷模塊與所述創(chuàng)建模塊是并行的。
具體地,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),具體包括:
預(yù)先創(chuàng)建一級(jí)用戶隊(duì)列、一級(jí)用戶隊(duì)列中表征每個(gè)用戶的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)指向的二級(jí)任務(wù)隊(duì)列;
將所述系統(tǒng)任務(wù)添加到其相應(yīng)的二級(jí)任務(wù)隊(duì)列中;
在每一次循環(huán)中,執(zhí)行所述二級(jí)任務(wù)隊(duì)列首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。
具體地,將該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),具體包括:
修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù);
將所述隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn),以實(shí)現(xiàn)該下一循環(huán)中該節(jié)點(diǎn)作為該二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
具體地,響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,具體包括:
接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令;
響應(yīng)于用戶的任務(wù)請(qǐng)求指令,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn);
定位該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
具體地,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn)之后,還包括:
當(dāng)所述一級(jí)用戶隊(duì)列中并不存在表征該用戶的隊(duì)列節(jié)點(diǎn),為該用戶在一級(jí)用戶隊(duì)列的隊(duì)尾中創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
優(yōu)選地,當(dāng)執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列中的所有系統(tǒng)任務(wù)后,還包括:
刪除該二級(jí)任務(wù)隊(duì)列以及其所對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)。
相比現(xiàn)有技術(shù),本發(fā)明的方案具有以下優(yōu)點(diǎn):
本發(fā)明的系統(tǒng)任務(wù)調(diào)度方法通過(guò)創(chuàng)建一級(jí)用戶隊(duì)列以及一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列,調(diào)整了排隊(duì)隊(duì)列的結(jié)構(gòu),調(diào)整單條隊(duì)列改為兩級(jí)隊(duì)列,在一次循環(huán)中,執(zhí)行一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù),對(duì)隊(duì)列任務(wù)的處理邏輯進(jìn)行了調(diào)整,有效平衡了各個(gè)用戶之間的系統(tǒng)任務(wù)的等待時(shí)間,提高了用戶的使用體驗(yàn)。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,這些將從下面的描述中變得明顯,或通過(guò)本發(fā)明的實(shí)踐了解到。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明中一種系統(tǒng)任務(wù)調(diào)度方法的一種實(shí)施例的流程示意圖;
圖2為本發(fā)明中一種系統(tǒng)任務(wù)調(diào)度裝置的一種實(shí)施例的結(jié)構(gòu)示意圖;
具體實(shí)施方式
為了使本技術(shù)領(lǐng)域的人員更好地理解本發(fā)明方案,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述。
在本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的描述的一些流程中,包含了按照特定順序出現(xiàn)的多個(gè)操作,但是應(yīng)該清楚了解,這些操作可以不按照其在本文中出現(xiàn)的順序來(lái)執(zhí)行或并行執(zhí)行,操作的序號(hào)如101、102等,僅僅是用于區(qū)分開(kāi)各個(gè)不同的操作,序號(hào)本身不代表任何的執(zhí)行順序。另外,這些流程可以包括更多或更少的操作,并且這些操作可以按順序執(zhí)行或并行執(zhí)行。需要說(shuō)明的是,本文中的“第一”、“第二”等描述,是用于區(qū)分不同的消息、設(shè)備、模塊等,不代表先后順序,也不限定“第一”和“第二”是不同的類型。
本領(lǐng)域普通技術(shù)人員可以理解,除非特意聲明,這里使用的單數(shù)形式“一”、“一個(gè)”、“所述”和“該”也可包括復(fù)數(shù)形式。應(yīng)該進(jìn)一步理解的是,本發(fā)明的說(shuō)明書(shū)中使用的措辭“包括”是指存在所述特征、整數(shù)、步驟、操作、元件和/或組件,但是并不排除存在或添加一個(gè)或多個(gè)其他特征、整數(shù)、步驟、操作、元件、組件和/或它們的組。應(yīng)該理解,當(dāng)我們稱元件被“連接”或“耦接”到另一元件時(shí),它可以直接連接或耦接到其他元件,或者也可以存在中間元件。此外,這里使用的“連接”或“耦接”可以包括無(wú)線連接或無(wú)線耦接。這里使用的措辭“和/或”包括一個(gè)或更多個(gè)相關(guān)聯(lián)的列出項(xiàng)的全部或任一單元和全部組合。
本領(lǐng)域普通技術(shù)人員可以理解,除非另外定義,這里使用的所有術(shù)語(yǔ)(包括技術(shù)術(shù)語(yǔ)和科學(xué)術(shù)語(yǔ)),具有與本發(fā)明所屬領(lǐng)域中的普通技術(shù)人員的一般理解相同的意義。還應(yīng)該理解的是,諸如通用字典中定義的那些術(shù)語(yǔ),應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文中的意義一致的意義,并且除非像這里一樣被特定定義,否則不會(huì)用理想化或過(guò)于正式的含義來(lái)解釋。
本領(lǐng)域普通技術(shù)人員可以理解,本發(fā)明所涉及的名詞的含義至少包括:
遍歷(Traversal):是指沿著某條搜索路線,依次對(duì)樹(shù)中每個(gè)結(jié)點(diǎn)均做一次且僅做一次訪問(wèn)。訪問(wèn)結(jié)點(diǎn)所作的操作依賴于具體的應(yīng)用問(wèn)題。遍歷是二叉樹(shù)上最重要的運(yùn)算之一,是二叉樹(shù)上進(jìn)行其它運(yùn)算之基礎(chǔ)。當(dāng)然遍歷的概念也適合于多元素集合的情況,如數(shù)組。
隊(duì)列(Queue):是一種線性表,特殊之處在于它只允許在表的前端進(jìn)行刪除操作,而在表的后端進(jìn)行插入操作。和棧一樣,隊(duì)列是一種操作受限制的線性表。進(jìn)行插入操作的端稱為隊(duì)尾,進(jìn)行刪除操作的端稱為隊(duì)頭。隊(duì)列中沒(méi)有元素時(shí),稱為空隊(duì)列。隊(duì)列的數(shù)據(jù)元素又稱為隊(duì)列元素。在隊(duì)列中插入一個(gè)隊(duì)列元素,稱為入隊(duì);從隊(duì)列中刪除一個(gè)隊(duì)列元素,稱為出隊(duì)。因?yàn)猷搅兄辉试S在一端插入,在另一端刪除,所以只有最早進(jìn)入隊(duì)列的元素才能從隊(duì)列中刪除,故隊(duì)列又稱為先進(jìn)先出線性表。
并行(Parallel):是指“并排行走”或“同時(shí)實(shí)行或?qū)嵤?。在操作系統(tǒng)中是指,一組程序按獨(dú)立異步的速度執(zhí)行,不等于時(shí)間上的重疊(同一個(gè)時(shí)刻發(fā)生。
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
如圖1,示出了本發(fā)明中一種系統(tǒng)任務(wù)調(diào)度方法的一個(gè)實(shí)施例。該系統(tǒng)任務(wù)調(diào)度方法包括步驟S11和步驟S12。其中,步驟S11和步驟S12是并行的,能有效地同時(shí)進(jìn)行運(yùn)作,提高對(duì)用戶使用智能終端所發(fā)出的系統(tǒng)任務(wù)指令給予及時(shí)的應(yīng)答,提高了處理的效率。
步驟S11:循環(huán)遍歷用于存儲(chǔ)所述系統(tǒng)任務(wù)的一級(jí)用戶隊(duì)列,在每次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),相應(yīng)將該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),以清除已被執(zhí)行的所述系統(tǒng)任務(wù),直至所有已存儲(chǔ)的系統(tǒng)任務(wù)均被執(zhí)行。
在使用互聯(lián)網(wǎng)產(chǎn)品時(shí),用戶會(huì)向服務(wù)器發(fā)送相關(guān)的任務(wù)請(qǐng)求指令,以請(qǐng)求服務(wù)器提供相應(yīng)的功能,以滿足自己當(dāng)前情形下的需要。例如,一個(gè)用戶在大城市里迷了路,他為了重新找到屬于自己的路,準(zhǔn)確到達(dá)目的地,他需要知道自己身處何方、附近都有些什么建筑、以及到達(dá)目的地的路線圖。他通過(guò)使用地圖軟件應(yīng)用程序來(lái)定位一下自己的位置,查看周圍的環(huán)境,并規(guī)劃始發(fā)地與終點(diǎn)地的線路圖。在使用該地圖軟件所提供的功能服務(wù)的過(guò)程中,他所使用的智能終端會(huì)不斷向服務(wù)器請(qǐng)求多個(gè)任務(wù),從而獲取相關(guān)的信息。所述的智能終端在向服務(wù)器發(fā)送相關(guān)的操作請(qǐng)求時(shí),所述服務(wù)器會(huì)將該操作請(qǐng)求生成相應(yīng)的系統(tǒng)任務(wù),并將所述系統(tǒng)任務(wù)存儲(chǔ)到相應(yīng)的隊(duì)列中去,以等待被執(zhí)行。
本發(fā)明的實(shí)施例中,所述系統(tǒng)任務(wù)存儲(chǔ)于一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。當(dāng)服務(wù)器執(zhí)行系統(tǒng)任務(wù)時(shí),會(huì)循環(huán)遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)。在每一次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。將系統(tǒng)任務(wù)的排隊(duì)隊(duì)列的結(jié)構(gòu)進(jìn)行了調(diào)整,將任務(wù)的排列以及處理結(jié)構(gòu)由單條隊(duì)列改為兩級(jí)隊(duì)列(包括一級(jí)用戶隊(duì)列和二級(jí)任務(wù)隊(duì)列),有效平衡了系統(tǒng)任務(wù)的等待時(shí)間,優(yōu)化了對(duì)不同用戶的系統(tǒng)任務(wù)的響應(yīng)問(wèn)題,提高了用戶的體驗(yàn)。
進(jìn)一步地,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),具體包括:
預(yù)先創(chuàng)建一級(jí)用戶隊(duì)列、一級(jí)用戶隊(duì)列中表征每個(gè)用戶的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)指向的二級(jí)任務(wù)隊(duì)列;
將所述系統(tǒng)任務(wù)添加到其相應(yīng)的二級(jí)任務(wù)隊(duì)列中;
在每一次循環(huán)中,執(zhí)行所述二級(jí)任務(wù)隊(duì)列首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。
在本實(shí)施例的一種優(yōu)選方案中,所述一級(jí)用戶隊(duì)列由服務(wù)器預(yù)先創(chuàng)建,其上的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列則根據(jù)所接收到的系統(tǒng)任務(wù)動(dòng)態(tài)創(chuàng)建的。該動(dòng)態(tài)建立的方式存在兩種實(shí)現(xiàn)方案,其一是:所述一級(jí)用戶隊(duì)列其對(duì)應(yīng)的長(zhǎng)度是確定,若該隊(duì)列未滿時(shí),則響應(yīng)于用戶的任務(wù)請(qǐng)求指令創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列,否則,則用戶的任務(wù)請(qǐng)求指令會(huì)被延遲應(yīng)答,處于等待的過(guò)程中,直到所述一級(jí)用戶隊(duì)列未滿;其二是:所述一級(jí)用戶隊(duì)列其對(duì)應(yīng)的長(zhǎng)度是不受限制的,但其動(dòng)態(tài)創(chuàng)建隊(duì)列節(jié)點(diǎn)遵循一定的條件,例如,循環(huán)遍歷所述一級(jí)用戶隊(duì)列,執(zhí)行相應(yīng)的系統(tǒng)任務(wù)1秒后,接收處于等待隊(duì)列中的用戶任務(wù)請(qǐng)求指令,創(chuàng)建相應(yīng)的系統(tǒng)任務(wù),以及用于存儲(chǔ)系統(tǒng)任務(wù)信息的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。在創(chuàng)建完成相應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列后,添加相應(yīng)的系統(tǒng)任務(wù)。在每一次遍歷循環(huán)中,執(zhí)行每一個(gè)一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
例如,在一個(gè)一級(jí)用戶隊(duì)列中,先后存在表征小趙、小張、小錢三個(gè)用戶的隊(duì)列節(jié)點(diǎn)A、B、C。其中隊(duì)列節(jié)點(diǎn)A所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)A1、A2、A3、A4這四個(gè)隊(duì)列節(jié)點(diǎn),隊(duì)列節(jié)點(diǎn)B所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)B1、B2、B3這三個(gè)隊(duì)列節(jié)點(diǎn),隊(duì)列節(jié)點(diǎn)C所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)C1、C2這兩個(gè)隊(duì)列節(jié)點(diǎn)。其中,A1、B1、C1分別是對(duì)應(yīng)的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。在一次遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn),執(zhí)行相應(yīng)的系統(tǒng)任務(wù)的循環(huán)中,先后執(zhí)行A1、B1、C1,有效地調(diào)度了各用戶對(duì)應(yīng)的系統(tǒng)任務(wù)的執(zhí)行的先后順序,并不需要執(zhí)行完一個(gè)用戶的所有系統(tǒng)任務(wù)在執(zhí)行另一個(gè)用戶的系統(tǒng)任務(wù),平衡了各個(gè)用戶所發(fā)出的系統(tǒng)請(qǐng)求指令的響應(yīng)時(shí)間,減少了部分用戶的等待響應(yīng)的時(shí)間,有助于提高用戶的體驗(yàn)。
在一次又一次的循環(huán)遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn),并執(zhí)行該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的過(guò)程中,需要在執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)的同時(shí),將該二級(jí)任務(wù)隊(duì)列對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn),將該下一節(jié)點(diǎn)作為其在下以循環(huán)中的首節(jié)點(diǎn),以便在下一次的循環(huán)遍歷操作中能完成正確的任務(wù)執(zhí)行操作,避免因?yàn)橐患?jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)與二級(jí)任務(wù)隊(duì)列中的錯(cuò)誤映射關(guān)系而導(dǎo)致系統(tǒng)的出錯(cuò)。
進(jìn)一步地,將該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),具體包括:
修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù);
將所述隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn),以實(shí)現(xiàn)該下一循環(huán)中該節(jié)點(diǎn)作為該二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
在本實(shí)施例中,在執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)后,一個(gè)并行的修改程序,修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù),將原本指向剛被執(zhí)行完的首節(jié)點(diǎn)的映射關(guān)系,更改為指向該首節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。由于采用的是并行的方式,修改程序所執(zhí)行的更改一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù),重新建立一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)與其所指向的二級(jí)任務(wù)隊(duì)列中的節(jié)點(diǎn)的映射關(guān)系,并不會(huì)影響到當(dāng)前的步驟11,即并不影響下一個(gè)二級(jí)任務(wù)隊(duì)列中首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)的執(zhí)行。并且進(jìn)一步保證了正確的映射關(guān)系,將該下一節(jié)點(diǎn)作為二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn),在服務(wù)器的下一次循環(huán)中,有效地調(diào)度了系統(tǒng)任務(wù)的執(zhí)行,平衡了各個(gè)用戶的系統(tǒng)任務(wù)的響應(yīng)時(shí)間,避免系統(tǒng)任務(wù)等待時(shí)間過(guò)長(zhǎng),造成用戶的體驗(yàn)不好。例如,一次循環(huán)中,執(zhí)行了一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)E所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)F,在該二級(jí)任務(wù)隊(duì)列中,首節(jié)點(diǎn)F的下一個(gè)節(jié)點(diǎn)是G,則在執(zhí)行完首節(jié)點(diǎn)F所存儲(chǔ)的系統(tǒng)任務(wù)時(shí),修改隊(duì)列節(jié)點(diǎn)E與二級(jí)任務(wù)隊(duì)列的映射關(guān)系,將隊(duì)列節(jié)點(diǎn)E指向二級(jí)任務(wù)隊(duì)列中的下一個(gè)節(jié)點(diǎn)G,通過(guò)改變映射關(guān)系,有效調(diào)度了系統(tǒng)任務(wù)的執(zhí)行。此外,當(dāng)一個(gè)二級(jí)任務(wù)隊(duì)列中的所述系統(tǒng)任務(wù)被執(zhí)行完后,清楚儲(chǔ)存該系統(tǒng)任務(wù)的節(jié)點(diǎn),直到所有二級(jí)任務(wù)隊(duì)列所存儲(chǔ)的所有系統(tǒng)任務(wù)均被執(zhí)行。
步驟S12:響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,在該二級(jí)任務(wù)隊(duì)列的隊(duì)尾創(chuàng)建與該任務(wù)請(qǐng)求指令相應(yīng)的系統(tǒng)任務(wù)。
具體地,響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,具體包括:
接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令;
響應(yīng)于用戶的任務(wù)請(qǐng)求指令,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn);
定位該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
在本實(shí)施例的一種優(yōu)選方案當(dāng)中,用戶使用智能終端向服務(wù)器發(fā)出任務(wù)請(qǐng)求指令,以滿足自身的需求。系統(tǒng)接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令。例如,在1秒內(nèi),共有甲、乙、丙三人分別發(fā)出了任務(wù)請(qǐng)求指令L1、L2、L3。系統(tǒng)接收這1秒內(nèi),甲、乙、丙三人所發(fā)出的任務(wù)請(qǐng)求指令L1、L2、L3后,響應(yīng)于所述任務(wù)請(qǐng)求指令,查詢一級(jí)用戶隊(duì)列中各自表征甲、乙、丙的隊(duì)列節(jié)點(diǎn),從而定位到甲、乙、丙各自的二級(jí)任務(wù)隊(duì)列V1、V2、V3,并將系統(tǒng)任務(wù)L1、L2、L3分別添加到二級(jí)任務(wù)隊(duì)列V1、V2、V3的隊(duì)尾,完成了系統(tǒng)任務(wù)的添加。在每一次的循環(huán)中,服務(wù)器會(huì)執(zhí)行一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)。
具體地,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn)之后,還包括:
當(dāng)所述一級(jí)用戶隊(duì)列中并不存在表征該用戶的隊(duì)列節(jié)點(diǎn),為該用戶在一級(jí)用戶隊(duì)列的隊(duì)尾中創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
當(dāng)然,查詢用戶在一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)的時(shí)候,也可能查詢不到該用戶對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)。當(dāng)一個(gè)用戶未被現(xiàn)有的一級(jí)用戶隊(duì)列所記錄,即未在一級(jí)用戶隊(duì)列中創(chuàng)建表征該用戶的隊(duì)列節(jié)點(diǎn),需要給該用戶創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列,并將根據(jù)所接收到的該用戶的任務(wù)請(qǐng)求指令所創(chuàng)建的系統(tǒng)任務(wù)添加到二級(jí)任務(wù)隊(duì)列中去。根據(jù)隊(duì)列的特點(diǎn),表征一個(gè)用戶的隊(duì)列節(jié)點(diǎn)是創(chuàng)建在一級(jí)用戶隊(duì)列的隊(duì)尾的。
優(yōu)選地,當(dāng)執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列中的所有系統(tǒng)任務(wù)后,還包括:
刪除該二級(jí)任務(wù)隊(duì)列以及其所對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)。
當(dāng)一個(gè)二級(jí)任務(wù)隊(duì)列所存儲(chǔ)的系統(tǒng)任務(wù)被執(zhí)行完之后,將刪除該二級(jí)任務(wù)隊(duì)列以及該二級(jí)任務(wù)隊(duì)列對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn),有助于釋放內(nèi)存,釋放隊(duì)列資源,進(jìn)一步添加處于等待處理狀態(tài)的系統(tǒng)任務(wù),加快對(duì)系統(tǒng)任務(wù)的處理。
第二方面,提供了一種裝置。如圖2所示,該裝置包括循環(huán)遍歷模塊S101和創(chuàng)建模塊S102。其中,循環(huán)遍歷模塊S101和創(chuàng)建模塊S102是并行的,能有效地同時(shí)進(jìn)行運(yùn)作,提高對(duì)用戶使用智能終端所發(fā)出的系統(tǒng)任務(wù)指令給予及時(shí)的應(yīng)答,提高了處理的效率。
循環(huán)遍歷模塊S101,用于循環(huán)遍歷用于存儲(chǔ)所述系統(tǒng)任務(wù)的一級(jí)用戶隊(duì)列,在每次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),相應(yīng)將該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),以清除已被執(zhí)行的所述系統(tǒng)任務(wù),直至所有已存儲(chǔ)的系統(tǒng)任務(wù)均被執(zhí)行。
在使用互聯(lián)網(wǎng)產(chǎn)品時(shí),用戶會(huì)向服務(wù)器發(fā)送相關(guān)的任務(wù)請(qǐng)求指令,以請(qǐng)求服務(wù)器提供相應(yīng)的功能,以滿足自己當(dāng)前情形下的需要。例如,一個(gè)用戶在大城市里迷了路,他為了重新找到屬于自己的路,準(zhǔn)確到達(dá)目的地,他需要知道自己身處何方、附近都有些什么建筑、以及到達(dá)目的地的路線圖。他通過(guò)使用地圖軟件應(yīng)用程序來(lái)定位一下自己的位置,查看周圍的環(huán)境,并規(guī)劃始發(fā)地與終點(diǎn)地的線路圖。在使用該地圖軟件所提供的功能服務(wù)的過(guò)程中,他所使用的智能終端會(huì)不斷向服務(wù)器請(qǐng)求多個(gè)任務(wù),從而獲取相關(guān)的信息。所述的智能終端在向服務(wù)器發(fā)送相關(guān)的操作請(qǐng)求時(shí),所述服務(wù)器會(huì)將該操作請(qǐng)求生成相應(yīng)的系統(tǒng)任務(wù),并將所述系統(tǒng)任務(wù)存儲(chǔ)到相應(yīng)的隊(duì)列中去,以等待被執(zhí)行。
本發(fā)明的實(shí)施例中,所述系統(tǒng)任務(wù)存儲(chǔ)于一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。當(dāng)服務(wù)器執(zhí)行系統(tǒng)任務(wù)時(shí),會(huì)循環(huán)遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)。在每一次循環(huán)中,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。將系統(tǒng)任務(wù)的排隊(duì)隊(duì)列的結(jié)構(gòu)進(jìn)行了調(diào)整,將任務(wù)的排列以及處理結(jié)構(gòu)由單條隊(duì)列改為兩級(jí)隊(duì)列(包括一級(jí)用戶隊(duì)列和二級(jí)任務(wù)隊(duì)列),有效平衡了系統(tǒng)任務(wù)的等待時(shí)間,優(yōu)化了對(duì)不同用戶的系統(tǒng)任務(wù)的響應(yīng)問(wèn)題,提高了用戶的體驗(yàn)。
進(jìn)一步地,執(zhí)行該一級(jí)用戶隊(duì)列中每個(gè)用戶相應(yīng)的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù),具體包括:
預(yù)先創(chuàng)建一級(jí)用戶隊(duì)列、一級(jí)用戶隊(duì)列中表征每個(gè)用戶的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)指向的二級(jí)任務(wù)隊(duì)列;
將所述系統(tǒng)任務(wù)添加到其相應(yīng)的二級(jí)任務(wù)隊(duì)列中;
在每一次循環(huán)中,執(zhí)行所述二級(jí)任務(wù)隊(duì)列首節(jié)點(diǎn)所存儲(chǔ)的所述系統(tǒng)任務(wù)。
在本實(shí)施例的一種優(yōu)選方案中,所述一級(jí)用戶隊(duì)列由服務(wù)器預(yù)先創(chuàng)建,其上的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列則根據(jù)所接收到的系統(tǒng)任務(wù)動(dòng)態(tài)創(chuàng)建的。該動(dòng)態(tài)建立的方式存在兩種實(shí)現(xiàn)方案,其一是:所述一級(jí)用戶隊(duì)列其對(duì)應(yīng)的長(zhǎng)度是確定,若該隊(duì)列未滿時(shí),則響應(yīng)于用戶的任務(wù)請(qǐng)求指令創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列,否則,則用戶的任務(wù)請(qǐng)求指令會(huì)被延遲應(yīng)答,處于等待的過(guò)程中,直到所述一級(jí)用戶隊(duì)列未滿;其二是:所述一級(jí)用戶隊(duì)列其對(duì)應(yīng)的長(zhǎng)度是不受限制的,但其動(dòng)態(tài)創(chuàng)建隊(duì)列節(jié)點(diǎn)遵循一定的條件,例如,循環(huán)遍歷所述一級(jí)用戶隊(duì)列,執(zhí)行相應(yīng)的系統(tǒng)任務(wù)1秒后,接收處于等待隊(duì)列中的用戶任務(wù)請(qǐng)求指令,創(chuàng)建相應(yīng)的系統(tǒng)任務(wù),以及用于存儲(chǔ)系統(tǒng)任務(wù)信息的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。在創(chuàng)建完成相應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列后,添加相應(yīng)的系統(tǒng)任務(wù)。在每一次遍歷循環(huán)中,執(zhí)行每一個(gè)一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
例如,在一個(gè)一級(jí)用戶隊(duì)列中,先后存在表征小趙、小張、小錢三個(gè)用戶的隊(duì)列節(jié)點(diǎn)A、B、C。其中隊(duì)列節(jié)點(diǎn)A所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)A1、A2、A3、A4這四個(gè)隊(duì)列節(jié)點(diǎn),隊(duì)列節(jié)點(diǎn)B所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)B1、B2、B3這三個(gè)隊(duì)列節(jié)點(diǎn),隊(duì)列節(jié)點(diǎn)C所指向的二級(jí)任務(wù)隊(duì)列中具有存儲(chǔ)有系統(tǒng)任務(wù)C1、C2這兩個(gè)隊(duì)列節(jié)點(diǎn)。其中,A1、B1、C1分別是對(duì)應(yīng)的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。在一次遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn),執(zhí)行相應(yīng)的系統(tǒng)任務(wù)的循環(huán)中,先后執(zhí)行A1、B1、C1,有效地調(diào)度了各用戶對(duì)應(yīng)的系統(tǒng)任務(wù)的執(zhí)行的先后順序,并不需要執(zhí)行完一個(gè)用戶的所有系統(tǒng)任務(wù)在執(zhí)行另一個(gè)用戶的系統(tǒng)任務(wù),平衡了各個(gè)用戶所發(fā)出的系統(tǒng)請(qǐng)求指令的響應(yīng)時(shí)間,減少了部分用戶的等待響應(yīng)的時(shí)間,有助于提高用戶的體驗(yàn)。
在一次又一次的循環(huán)遍歷一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn),并執(zhí)行該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的過(guò)程中,需要在執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)的同時(shí),將該二級(jí)任務(wù)隊(duì)列對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn),將該下一節(jié)點(diǎn)作為其在下以循環(huán)中的首節(jié)點(diǎn),以便在下一次的循環(huán)遍歷操作中能完成正確的任務(wù)執(zhí)行操作,避免因?yàn)橐患?jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)與二級(jí)任務(wù)隊(duì)列中的錯(cuò)誤映射關(guān)系而導(dǎo)致系統(tǒng)的出錯(cuò)。
進(jìn)一步地,將該二級(jí)任務(wù)隊(duì)列中的下一節(jié)點(diǎn)作為其在下一循環(huán)中的首節(jié)點(diǎn),具體包括:
修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù);
將所述隊(duì)列節(jié)點(diǎn)指向該二級(jí)任務(wù)隊(duì)列的下一節(jié)點(diǎn),以實(shí)現(xiàn)該下一循環(huán)中該節(jié)點(diǎn)作為該二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)。
在本實(shí)施例中,在執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)后,一個(gè)并行的修改程序,修改該二級(jí)任務(wù)隊(duì)列所對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù),將原本指向剛被執(zhí)行完的首節(jié)點(diǎn)的映射關(guān)系,更改為指向該首節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。由于采用的是并行的方式,修改程序所執(zhí)行的更改一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所存儲(chǔ)的數(shù)據(jù),重新建立一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)與其所指向的二級(jí)任務(wù)隊(duì)列中的節(jié)點(diǎn)的映射關(guān)系,并不會(huì)影響到當(dāng)前的步驟11,即不影響下一個(gè)二級(jí)任務(wù)隊(duì)列中首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)的執(zhí)行。并且進(jìn)一步保證了正確的映射關(guān)系,將該下一節(jié)點(diǎn)作為二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn),在服務(wù)器的下一次循環(huán)中,有效地調(diào)度了系統(tǒng)任務(wù)的執(zhí)行,平衡了各個(gè)用戶的系統(tǒng)任務(wù)的響應(yīng)時(shí)間,避免系統(tǒng)任務(wù)等待時(shí)間過(guò)長(zhǎng),造成用戶的體驗(yàn)不好。例如,一次循環(huán)中,執(zhí)行了一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)E所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)F,在該二級(jí)任務(wù)隊(duì)列中,首節(jié)點(diǎn)F的下一個(gè)節(jié)點(diǎn)是G,則在執(zhí)行完首節(jié)點(diǎn)F所存儲(chǔ)的系統(tǒng)任務(wù)時(shí),修改隊(duì)列節(jié)點(diǎn)E與二級(jí)任務(wù)隊(duì)列的映射關(guān)系,將隊(duì)列節(jié)點(diǎn)E指向二級(jí)任務(wù)隊(duì)列中的下一個(gè)節(jié)點(diǎn)G,通過(guò)改變映射關(guān)系,有效調(diào)度了系統(tǒng)任務(wù)的執(zhí)行。此外,當(dāng)一個(gè)二級(jí)任務(wù)隊(duì)列中的所述系統(tǒng)任務(wù)被執(zhí)行完后,清楚儲(chǔ)存該系統(tǒng)任務(wù)的節(jié)點(diǎn),直到所有二級(jí)任務(wù)隊(duì)列所存儲(chǔ)的所有系統(tǒng)任務(wù)均被執(zhí)行。
創(chuàng)建模塊S102,用于響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,在該二級(jí)任務(wù)隊(duì)列的隊(duì)尾創(chuàng)建與該任務(wù)請(qǐng)求指令相應(yīng)的系統(tǒng)任務(wù)。
具體地,響應(yīng)于用戶的任務(wù)請(qǐng)求指令,在一級(jí)用戶隊(duì)列中定位該用戶的二級(jí)任務(wù)隊(duì)列,具體包括:
接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令;
響應(yīng)于用戶的任務(wù)請(qǐng)求指令,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn);
定位該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
在本實(shí)施例的一種優(yōu)選方案當(dāng)中,用戶使用智能終端向服務(wù)器發(fā)出任務(wù)請(qǐng)求指令,以滿足自身的需求。系統(tǒng)接收一段時(shí)間內(nèi)的用戶的任務(wù)請(qǐng)求指令。例如,在1秒內(nèi),共有甲、乙、丙三人分別發(fā)出了任務(wù)請(qǐng)求指令L1、L2、L3。系統(tǒng)接收這1秒內(nèi),甲、乙、丙三人所發(fā)出的任務(wù)請(qǐng)求指令L1、L2、L3后,響應(yīng)于所述任務(wù)請(qǐng)求指令,查詢一級(jí)用戶隊(duì)列中各自表征甲、乙、丙的隊(duì)列節(jié)點(diǎn),從而定位到甲、乙、丙各自的二級(jí)任務(wù)隊(duì)列V1、V2、V3,并將系統(tǒng)任務(wù)L1、L2、L3分別添加到二級(jí)任務(wù)隊(duì)列V1、V2、V3的隊(duì)尾,完成了系統(tǒng)任務(wù)的添加。在每一次的循環(huán)中,服務(wù)器會(huì)執(zhí)行一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列的首節(jié)點(diǎn)所存儲(chǔ)的系統(tǒng)任務(wù)。
具體地,查詢?cè)撚脩粼谝患?jí)用戶隊(duì)列中其相應(yīng)的隊(duì)列節(jié)點(diǎn)之后,還包括:
當(dāng)所述一級(jí)用戶隊(duì)列中并不存在表征該用戶的隊(duì)列節(jié)點(diǎn),為該用戶在一級(jí)用戶隊(duì)列的隊(duì)尾中創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列。
當(dāng)然,查詢用戶在一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)的時(shí)候,也可能查詢不到該用戶對(duì)應(yīng)的一級(jí)用戶隊(duì)列的隊(duì)列節(jié)點(diǎn)。當(dāng)一個(gè)用戶未被現(xiàn)有的一級(jí)用戶隊(duì)列所記錄,即未在一級(jí)用戶隊(duì)列中創(chuàng)建表征該用戶的隊(duì)列節(jié)點(diǎn),需要給該用戶創(chuàng)建相應(yīng)的隊(duì)列節(jié)點(diǎn)以及該隊(duì)列節(jié)點(diǎn)所指向的二級(jí)任務(wù)隊(duì)列,并將根據(jù)所接收到的該用戶的任務(wù)請(qǐng)求指令所創(chuàng)建的系統(tǒng)任務(wù)添加到二級(jí)任務(wù)隊(duì)列中去。根據(jù)隊(duì)列的特點(diǎn),表征一個(gè)用戶的隊(duì)列節(jié)點(diǎn)是創(chuàng)建在一級(jí)用戶隊(duì)列的隊(duì)尾的。
優(yōu)選地,當(dāng)執(zhí)行完一個(gè)二級(jí)任務(wù)隊(duì)列中的所有系統(tǒng)任務(wù)后,還包括:
刪除該二級(jí)任務(wù)隊(duì)列以及其所對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn)。
當(dāng)一個(gè)二級(jí)任務(wù)隊(duì)列所存儲(chǔ)的系統(tǒng)任務(wù)被執(zhí)行完之后,將刪除該二級(jí)任務(wù)隊(duì)列以及該二級(jí)任務(wù)隊(duì)列對(duì)應(yīng)的一級(jí)用戶隊(duì)列中的隊(duì)列節(jié)點(diǎn),有助于釋放內(nèi)存,釋放隊(duì)列資源,進(jìn)一步添加處于等待處理狀態(tài)的系統(tǒng)任務(wù),加快對(duì)系統(tǒng)任務(wù)的處理。
以上對(duì)本發(fā)明所提供的一種系統(tǒng)任務(wù)調(diào)度方法及裝置進(jìn)行了詳細(xì)介紹,對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明實(shí)施例的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。