本發明涉及計算機技術領域,尤其涉及一種任務處理方法及裝置。
背景技術:
資源是能夠被線程處理的請求或計算單元等事物,不同的資源可以按照各自的特點進行分類。例如,簡單的數字運算表達式可以被認為是一種資源,加法為一種資源,以及減法為一種資源等。
其中,每種資源都對應一個任務集合,任務集合中包括至少一個待處理任務。例如,加法資源對應一個加法任務集合,加法任務集合包括任務“2+3”和任務“4+5”。任務“2+3”為計算2與3的和,任務“4+5”為計算4與5的和。
其中,當計算機需要對一個資源對應的任務集合中的任務進行處理時,需要控制一個線程獲取一個資源對應的任務集合中的一個任務,然后控制該線程對該任務進行處理。多個不同的線程不能同時分別處理同一個資源對應的任務集合中的多個任務,即,在任意時刻,任一個資源對應的任務集合中只有一個任務能夠被處理。
其中,為了對待處理任務進行處理,終端控制一個線程遍歷所有資源對應的任務集合,當遍歷到一個資源對應的任務集合時,判斷該任務集合中是否存在正在被其他線程處理的任務。如果該任務集合中不存在正在被其他線程處理的任務,則從該任務集合中獲取一個任務進行處理。如果該任務集合中存在正在被其他線程處理的任務;則遍歷下一個資源對應的任務集合,判斷下一個任務集合中是否存在正在被其他線程處理的任務,直至找到一個包括的任務均未正在被其他線程處理的任務集合為止。
然而,發明人發現,在現有技術中,在控制線程處理任務的過程中的大部分時間花費在了遍歷任務集合上,從而導致需要花費很多時間才能處理完所有任務集合中的任務,處理效率較低。
技術實現要素:
為克服相關技術中存在的問題,本發明提供一種任務處理方法及裝置。
根據本發明實施例的第一方面,提供一種任務處理方法,所述方法包括:
控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表 中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務,所述任務集合中包括的所有待處理任務均未正在被處理;
控制所述線程從所述資源的標識對應的任務集合中獲取預設個數個待處理任務;
控制所述線程對所述預設個數個待處理任務進行處理。
其中,所述控制所述線程從所述資源標識對應的任務集合中獲取預設個數個任務,包括:
控制所述線程從所述資源標識對應的任務集合中,獲取存儲時間最早的預設個數個待處理的任務。
其中,所述控制所述線程從所述資源標識對應的任務集合中,獲取存儲時間最早的預設個數個待處理的任務,包括:
控制所述線程獲取本地存儲的所述任務集合對應的、任務標識與存儲時間之間的對應關系;
獲取本地的當前時間;
在所述對應關系中查找與所述當前時間距離最遠的預設個數個存儲時間對應的任務標識;
從所述任務集合中分別獲取查找到的每個所述任務標識對應的待處理任務。
進一步地,所述方法還包括:
當對所述預設個數個待處理任務處理完畢時;從所述任務集合中刪除所述預設個數個待處理任務;
判斷所述任務集合中是否存在待處理任務;
當所述任務集合中存在待處理任務時,則將所述資源的標識存儲在所述資源標識列表中;
當所述任務集合中不存在待處理任務時,刪除所述資源的標識對應的任務集合。
進一步地,所述方法還包括:
接收攜帶待存儲任務和目標資源的標識存儲請求;所述存儲請求用于將待存儲任務存儲至目標資源的標識對應的任務集合中;
判斷本地是否存在所述目標資源的標識對應的任務集合;
當本地存在所述目標資源的標識對應的任務集合時,將所述待存儲任務存儲在目標資源標識對應的任務集合中;
當本地不存在所述目標資源的標識對應的任務集合時,創建所述目標資源的標識對應的任務集合;將所述待存儲任務存儲在所述創建的任務集合中;以及將所述目標資源 的標識存儲在所述預設資源標識列表中。
根據本發明實施例的第二方面,提供一種任務處理裝置,所述裝置包括:
提取模塊,用于控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務,所述任務集合中包括的所有待處理任務均未正在被處理;
獲取模塊,用于控制所述線程從所述資源的標識對應的任務集合中獲取預設個數個待處理任務;
處理模塊,用于控制所述線程對所述預設個數個待處理任務進行處理。
其中,所述獲取模塊包括:
獲取單元,用于控制所述線程從所述資源標識對應的任務集合中,獲取存儲時間最早的預設個數個待處理的任務。
其中,所述獲取單元包括:
第一獲取子單元,用于控制所述線程獲取本地存儲的所述任務集合對應的、任務標識與存儲時間之間的對應關系;
第二獲取子單元,用于獲取本地的當前時間;
查找子單元,用于在所述對應關系中查找與所述當前時間距離最遠的預設個數個存儲時間對應的任務標識;
第三獲取子單元,用于從所述任務集合中分別獲取查找到的每個所述任務標識對應的待處理任務。
進一步地,所述裝置還包括:
第一刪除模塊,用于當對所述預設個數個待處理任務處理完畢時;從所述任務集合中刪除所述預設個數個待處理任務;
第一判斷模塊,用于判斷所述任務集合中是否存在待處理任務;
第一存儲模塊,用于當所述任務集合中存在待處理任務時,則將所述資源的標識存儲在所述資源標識列表中;
第二刪除模塊,用于當所述任務集合中不存在待處理任務時,刪除所述資源的標識對應的任務集合。
其中,所述裝置還包括:
接收模塊,用于接收攜帶待存儲任務和目標資源的標識存儲請求;所述存儲請求用于將待存儲任務存儲至目標資源的標識對應的任務集合中;
第二判斷模塊,用于判斷本地是否存在所述目標資源的標識對應的任務集合;
第二存儲模塊,用于當本地存在所述目標資源的標識對應的任務集合時,將所述待存儲任務存儲在目標資源標識對應的任務集合中;
創建模塊,用于當本地不存在所述目標資源的標識對應的任務集合時,創建所述目標資源的標識對應的任務集合;將所述待存儲任務存儲在所述創建的任務集合中;以及將所述目標資源的標識存儲在所述預設資源標識列表中。
本發明的實施例提供的技術方案可以包括以下有益效果:在本發明中,控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務;所述任務集合中包括的所有待處理任務均未正在被處理;控制所述線程從所述資源標識對應的任務集合中獲取預設個數個待處理任務;控制所述線程對所述預設個數個待處理任務進行處理。在發明實施例中,無需花費大量時間遍歷任務集合,通過預設資源標識列表就可以直接、并且迅速獲取到一個包括的待處理任務均未正在被處理的任務集合,再從該任務集合中獲取一個待處理任務進行處理。整個處理過程中無需花費用于遍歷任務集合的時間,因此,相對于現有技術,本發明實施例可以提高處理效率。
應當理解的是,以上的一般描述和后文的細節描述僅是示例性和解釋性的,并不能限制本發明。
附圖說明
此處的附圖被并入說明書中并構成本說明書的一部分,示出了符合本發明的實施例,并與說明書一起用于解釋本發明的原理。
圖1是根據一示例性實施例示出的一種任務處理方法的流程圖。
圖2是根據一示例性實施例示出的一種任務處理方法的流程圖。
圖3是根據一示例性實施例示出的一種任務處理裝置的框圖。
具體實施方式
這里將詳細地對示例性實施例進行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本發明相一致的所有實施方式。相反,它們僅是與如所附權利要求書中所詳述的、本發明的一些方面相一致的裝置和方法的例子。
圖1是根據一示例性實施例示出的一種任務處理方法的流程圖,本發明實施例的執 行主體可以為終端等,如圖1所示,該方法包括以下步驟。
在步驟S101中,控制一個線程從預設資源標識列表中提取出一個資源的標識;
其中,該線程為空閑的線程,即,該線程為目前未正在處理任何任務。
預設資源標識表中存儲了至少一個資源的標識,每個資源的標識對應一個任務集合,任務集合中包括至少一個待處理任務;所述任務集合中包括的所有待處理任務均未正在被處理;
在本發明實施例中,終端從預設資源標識列表中提取出一個資源的標識之后,預設資源標識列表中就不再存在該一個資源的標識。
在步驟S102中,控制該線程從該資源的標識對應的任務集合中獲取預設個數個待處理任務;
控制該線程獲取與該資源標識相對應的任務集合,然后從該任務集合中獲取預設個數個待處理任務。
預設個數可以為1、2或3等,本發明對此不加以限定。在本發明實施例中,預設個數優選為1。這樣,終端可以控制該線程從該任務集合中獲取1個任務。
其中,在本發明實施例中,每個任務集合中的任務是終端事先添加的。
終端可以接收其他設備發送的攜帶待存儲任務和目標資源的標識存儲請求,也可以接收用戶輸入的攜帶待存儲任務和目標資源的標識存儲請求;該存儲請求用于將待存儲任務存儲至目標資源的標識對應的任務集合中;
當終端接收到攜帶待存儲任務和目標資源的標識存儲請求時,判斷本地是否存在目標資源的標識對應的任務集合;其中,本地存在的每個任務集合分別對應的資源的標識都存儲在預設標識列表中,因此可以在預設資源列表中查找是否存在目標資源的標識,如果預設標識列表中存在目標資源的標識,則確定本地存在目標資源的標識對應的任務集合。
當確定出本地存在目標資源的標識對應的任務集合時,將待存儲任務存儲在目標資源標識對應的任務集合中;
然而,當確定出本地不存在目標資源的標識對應的任務集合時,創建目標資源的標識對應的任務集合;將待存儲任務存儲在創建的任務集合中;其次,為了使得之后終端控制線程能夠獲取到該待存儲任務,需要將目標資源的標識存儲在預設資源標識列表中。
其中,終端在該任務集合中存儲的每個任務的存儲時間都不同,終端會優先處理存儲時間最早的任務,
因此,在本步驟,可以控制線程從資源標識對應的任務集合中,獲取存儲時間最早 的預設個數個待處理的任務,具體獲取過程包括如下流程:
11)、控制該線程獲取本地存儲的該任務集合對應的、任務標識與存儲時間之間的對應關系;
其中,任一個任務集合都對應的一個任務標識與存儲時間之間的對應關系。該對應關系中包括的所有任務標識對應的任務都存儲在該任務集合中。該對應關系中的任一條記錄中的存儲時間為將該記錄中的任務標識對應的任務存儲在該任務集合中的存儲時間。對于其他每一任務集合,同樣如此。
其中,每一個任務都有一個任務標識,用于唯一標識任務。
當終端將一個任務存儲在該任務集合時,會獲取終端的當前時刻,并作為存儲該任務的存儲時刻,然后將該任務的任務標識和該存儲時間作為一條記錄存儲在該任務集合都對應的、任務標識與存儲時間之間的對應關系中。之后當終端控制處理完該任務時,會從上述對應關系中刪除包括該任務的任務標識的記錄。
12)、獲取本地的當前時間;
獲取終端本地的當前時間。
13)、在該對應關系中查找與當前時間距離最遠的預設個數個存儲時間對應的任務標識;
其中,可以計算上述對應關系中的每一條記錄中包括存儲時間與當前時間之間的差值,獲取與當前時間之間的差值最大的預設個數個存儲時間,從上述對應關系中分別查找獲取的每一個存儲時間對應的任務標識。
14)、從任務集合中分別獲取查找到的每個任務標識對應的待處理任務。
如此實現從資源標識對應的任務集合中,獲取存儲時間最早的預設個數個待處理的任務。
在步驟S103中,控制該線程對該預設個數個待處理任務進行處理。
在本發明圖1所示的實施例中,控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務;所述任務集合中包括的所有待處理任務均未正在被處理;控制所述線程從所述資源標識對應的任務集合中獲取預設個數個待處理任務;控制所述線程對所述預設個數個待處理任務進行處理。在發明實施例中,無需花費大量時間遍歷任務集合,通過預設資源標識列表就可以直接、并且迅速獲取到一個包括的待處理任務均未正在被處理的任務集合,再從該任務集合中獲取一個待處理任務進行處理。整個處理過程中無需花費用于遍歷任務集合的時間,因此,相 對于現有技術,本發明實施例可以提高處理效率。
在本發明又一實施例中,參見圖2,該方法還包括:
在步驟S201中,當對該預設個數個待處理任務處理完畢時,從該任務集合中刪除該預設個數個待處理任務;
在本發明實施例中,當處理完該待處理任務時,如果不從該任務集合中刪除該待處理任務,則之后終端控制其他線程從預設資源標識列表中提取出該資源的標識后,就會根據該資源的標識獲取到該任務集合,這樣很可能就會從該任務集合中再次獲取到該任務,進而就會控制線程再次對該任務進行處理。然而,由于已經對該任務處理過了,無需再次對該任務進行處理,這樣就會造成重復處理,浪費系統資源。
因此,為了避免重復處理該任務而浪費系統資源,當對預設個數個待處理任務處理完畢時,需要從任務集合中刪除該預設個數個待處理任務。
在步驟S202中,判斷該任務集合中是否存在待處理任務;
當該任務集合中存在待處理任務時,在步驟S203中,則將該資源的標識存儲在資源標識列表中;
在本發明實施例中,如果該任務集合中還存在一個或多個待處理任務,則之后需要對該任務集合中的待處理任務繼續進行處理,因此,需要將資源的標識重新存儲在資源標識列表中,這樣,之后終端控制一個線程從預設資源標識列表中就可以提取出該資源的標識,進而可以根據該資源的標識獲取該任務集合,并對該任務集合中的待處理任務進行處理。
否則,如果未將資源的標識重新存儲在資源標識列表中,之后終端控制一個線程在預設資源標識列表中就查找不到該資源的標識,也就無法根據該資源的標識獲取該任務集合,以及就不會該對該任務集合中的待處理任務進行處理。
當該任務集合中不存在待處理任務時,在步驟S204中,刪除該資源的標識對應的任務集合。
其中,由于未存儲待處理任務的任務集合也需要占用內存空間,因此,當該任務集合中不存在待處理任務時,則可以確定該任務集合已經沒有作用的,因此,為了節省存儲空間,可以刪除資源標識對應的任務集合。
圖3是根據一示例性實施例示出的一種任務處理裝置的框圖。參照圖3,該裝置包括:
提取模塊11,用于控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務,所述任務集合中包括的所有待處理任務均未正在被處理;
獲取模塊12,用于控制所述線程從所述資源的標識對應的任務集合中獲取預設個數個待處理任務;
處理模塊13,用于控制所述線程對所述預設個數個待處理任務進行處理。
在本發明圖3所示的實施例中,控制一個線程從預設資源標識列表中提取出一個資源的標識;所述預設資源標識表中存儲了至少一個資源的標識,每個所述資源的標識對應一個任務集合,所述任務集合中包括至少一個待處理任務;所述任務集合中包括的所有待處理任務均未正在被處理;控制所述線程從所述資源標識對應的任務集合中獲取預設個數個待處理任務;控制所述線程對所述預設個數個待處理任務進行處理。在發明實施例中,無需花費大量時間遍歷任務集合,通過預設資源標識列表就可以直接、并且迅速獲取到一個包括的待處理任務均未正在被處理的任務集合,再從該任務集合中獲取一個待處理任務進行處理。整個處理過程中無需花費用于遍歷任務集合的時間,因此,相對于現有技術,本發明實施例可以提高處理效率。
其中,所述獲取模塊12包括:
獲取單元,用于控制所述線程從所述資源標識對應的任務集合中,獲取存儲時間最早的預設個數個待處理的任務。
其中,所述獲取單元包括:
第一獲取子單元,用于控制所述線程獲取本地存儲的所述任務集合對應的、任務標識與存儲時間之間的對應關系;
第二獲取子單元,用于獲取本地的當前時間;
查找子單元,用于在所述對應關系中查找與所述當前時間距離最遠的預設個數個存儲時間對應的任務標識;
第三獲取子單元,用于從所述任務集合中分別獲取查找到的每個所述任務標識對應的待處理任務。
進一步地,所述裝置還包括:
第一刪除模塊,用于當對所述預設個數個待處理任務處理完畢時;從所述任務集合中刪除所述預設個數個待處理任務;
第一判斷模塊,用于判斷所述任務集合中是否存在待處理任務;
第一存儲模塊,用于當所述任務集合中存在待處理任務時,則將所述資源的標識存儲在所述資源標識列表中;
第二刪除模塊,用于當所述任務集合中不存在待處理任務時,刪除所述資源的標識對應的任務集合。
進一步地,所述裝置還包括:
接收模塊,用于接收攜帶待存儲任務和目標資源的標識存儲請求;所述存儲請求用于將待存儲任務存儲至目標資源的標識對應的任務集合中;
第二判斷模塊,用于判斷本地是否存在所述目標資源的標識對應的任務集合;
第二存儲模塊,用于當本地存在所述目標資源的標識對應的任務集合時,將所述待存儲任務存儲在目標資源標識對應的任務集合中;
創建模塊,用于當本地不存在所述目標資源的標識對應的任務集合時,創建所述目標資源的標識對應的任務集合;將所述待存儲任務存儲在所述創建的任務集合中;以及將所述目標資源的標識存儲在所述預設資源標識列表中。
關于上述實施例中的裝置,其中各個模塊執行操作的具體方式已經在有關該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。
本領域技術人員在考慮說明書及實踐這里公開的發明后,將容易想到本發明的其它實施方案。本申請旨在涵蓋本發明的任何變型、用途或者適應性變化,這些變型、用途或者適應性變化遵循本發明的一般性原理并包括本發明未公開的本技術領域中的公知常識或慣用技術手段。說明書和實施例僅被視為示例性的,本發明的真正范圍和精神由下面的權利要求指出。
應當理解的是,本發明并不局限于上面已經描述并在附圖中示出的精確結構,并且可以在不脫離其范圍進行各種修改和改變。本發明的范圍僅由所附的權利要求來限制。