[發(fā)明專利]多任務隊列中任務的處理方法和裝置有效
| 申請?zhí)枺?/td> | 201611155748.4 | 申請日: | 2016-12-14 | 
| 公開(公告)號: | CN108228240B | 公開(公告)日: | 2021-02-26 | 
| 發(fā)明(設計)人: | 張鵬 | 申請(專利權)人: | 北京國雙科技有限公司 | 
| 主分類號: | G06F9/38 | 分類號: | G06F9/38;G06F9/48;G06F9/54 | 
| 代理公司: | 北京康信知識產(chǎn)權代理有限責任公司 11240 | 代理人: | 韓建偉;張永明 | 
| 地址: | 100083 北京市海淀區(qū)*** | 國省代碼: | 北京;11 | 
| 權利要求書: | 查看更多 | 說明書: | 查看更多 | 
| 摘要: | |||
| 搜索關鍵詞: | 任務 隊列 處理 方法 裝置 | ||
本發(fā)明公開了一種多任務隊列中任務的處理方法和裝置。其中,該方法包括:接收一個或多個任務的請求信息,其中,請求信息至少包括:任務的類型、任務的優(yōu)先級;根據(jù)請求信息將述一個或多個任務放入相應的隊列中;根據(jù)任務的類型和任務的優(yōu)先級,對隊列進行處理,將同一類型的任務放入不同的隊列中。本發(fā)明解決了在同一個隊列中同類型任務對相同資源的競爭造成任務執(zhí)行效率不高的技術問題。
技術領域
本發(fā)明涉及隊列算法領域,具體而言,涉及一種多任務隊列中任務的處理方法和裝置。
背景技術
目前隊列算法主要分為兩類,一類是先進先出(FIFO),即最先進入隊列的任務最先被取出執(zhí)行;還有一類是先進后出(FILO),即最先進入隊列的任務最后被取出,隊列總是優(yōu)先執(zhí)行最新進入的任務。上述兩種方案在單線程模式下都不會出問題,由于每個任務之間不會出現(xiàn)資源的競爭,因而,每個任務可以能很好地被執(zhí)行。然而,在多線程模式下,經(jīng)常會出現(xiàn)隊列中的相鄰任務去競爭同一資源造成任務失敗的情況。例如線程A取出隊列中的任務1,任務1要讀取文件test.txt,在任務1還沒有執(zhí)行完成時,線程2取出了任務2,任務2要向文件test.txt中寫入數(shù)據(jù),由于任務1還沒有執(zhí)行完成,此時文件test.txt處于鎖定狀態(tài),這樣任務2就會執(zhí)行失敗。
為了避免上述在多線程模式下,出現(xiàn)隊列中相鄰任務競爭同一資源造成任務執(zhí)行失敗的問題,現(xiàn)有技術采用的方案是對當前正在執(zhí)行的任務進行加鎖,使其處于鎖定狀態(tài),這樣后取出的任務就處于等待狀態(tài),直到處于鎖定狀態(tài)的任務執(zhí)行結束,下一個任務才會加鎖并執(zhí)行。在這種隊列算法下,鎖定期內(nèi)的任務會阻塞后面任務,不能充分發(fā)揮計算機的計算能力,造成系統(tǒng)的等待時間過長,效率不高。
針對上述的問題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明實施例提供了一種多任務隊列中任務的處理方法和裝置,以至少解決在同一個隊列中同類型任務對相同資源的競爭造成任務執(zhí)行效率不高的技術問題。
根據(jù)本發(fā)明實施例的一個方面,提供了一種多任務隊列中任務的處理方法,包括:接收一個或多個任務的請求信息,其中,請求信息至少包括:任務的類型、任務的優(yōu)先級;根據(jù)請求信息將一個或多個任務放入相應的隊列中;根據(jù)隊列中的任務的類型和優(yōu)先級對隊列進行處理,將同一類型的任務放入不同的隊列中。
進一步地,根據(jù)請求信息將一個或多個任務放入相應的隊列中,包括:判斷請求信息中是否包含了任務要進入的隊列的名稱;如果請求信息中包含了任務要進入的隊列的名稱,則將任務放入與名稱對應的隊列中;如果請求信息中沒有包含任務要進入的隊列的名稱,則將任務放入默認隊列中。
進一步地,如果請求信息中包含了任務要進入的隊列的名稱,則將任務放入與名稱對應的隊列中,包括:判斷是否存在與名稱對應的隊列;如果存在與名稱對應的隊列,則將任務放入與名稱對應的隊列中;如果不存在與名稱對應的隊列,則創(chuàng)建新的隊列,并將任務放入新的隊列中。
進一步地,在創(chuàng)建新的隊列,并將任務放入新的隊列中之后,方法還包括:將新的隊列命名為任務的請求信息中包含的隊列的名稱。
進一步地,根據(jù)隊列中的任務的類型和優(yōu)先級對隊列進行處理,將同一類型的任務放入不同的隊列中,包括:判斷隊列中是否存在類型相同的任務;如果隊列中不存在類型相同的任務,則按照隊列中的全部任務的優(yōu)先級對隊列中的任務進行排序;如果隊列中存在類型相同的任務,則將類型相同的多個任務放入不同的多個隊列中。
進一步地,將類型相同的多個任務放入不同的多個隊列中,包括:判斷除類型相同的多個任務所在的隊列以外的其它隊列中是否存在與類型相同的多個任務的類型相同的任務;如果不存在,則將類型相同的多個任務中的一個任務放入其它隊列中的一個隊列。
進一步地,如果剩余的其它隊列中都存在與類型相同的多個任務的類型相同的任務,則創(chuàng)建至少一個新的隊列,并將每個類型相同的任務放入不同的新的隊列中,直至每個類型相同的任務均放入不同的隊列。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于北京國雙科技有限公司,未經(jīng)北京國雙科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業(yè)授權和技術合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201611155748.4/2.html,轉載請聲明來源鉆瓜專利網(wǎng)。





