專(zhuān)利名稱(chēng):多線程處理方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到計(jì)算技術(shù)領(lǐng)域,特別涉及到一種多線程處理方法和裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,用戶(hù)對(duì)計(jì)算機(jī)性能的要求也越來(lái)越高;為了提高計(jì) 算機(jī)系統(tǒng)性能,很多軟件系統(tǒng)都使用了多線程技術(shù)最大限度的挖掘硬件的潛力。采用了多 線程技術(shù)的應(yīng)用程序可以更好地利用系統(tǒng)資源。其主要優(yōu)勢(shì)在于充分利用了 CPU的空閑時(shí) 間片,可以用盡可能少的時(shí)間來(lái)對(duì)用戶(hù)的要求做出響應(yīng),使得進(jìn)程的整體運(yùn)行效率得到較 大提高,同時(shí)增強(qiáng)了應(yīng)用程序的靈活性。在多線程系統(tǒng)中,如果需要對(duì)同一資源進(jìn)行操作就要使用鎖。所謂“鎖”,是為了讓 該線程獨(dú)自占有空間,在自身線程處理沒(méi)有完成之前,不允許其他線程占用自身正在使用 的資源。鎖的使用是為了某一個(gè)線程在操作某一件事務(wù)時(shí),獨(dú)自占有資源,并把自身占用的 資源鎖起來(lái),在自身沒(méi)有解鎖之前,其他線程只能等待,不能搶占。在具體實(shí)施過(guò)程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),使用鎖的次數(shù)過(guò)于頻繁,對(duì)系統(tǒng)的性能 就會(huì)造成影響;在并發(fā)請(qǐng)求數(shù)較多時(shí),一個(gè)請(qǐng)求等待另一個(gè)請(qǐng)求釋放資源的概率就會(huì)大大 增加,請(qǐng)求的響應(yīng)時(shí)間就會(huì)增大,會(huì)造成部分請(qǐng)求超時(shí)。
發(fā)明內(nèi)容
本發(fā)明的目的之一為提供一種多線程處理方法和裝置,可提升系統(tǒng)性能上,避免 出現(xiàn)因?yàn)殒i的應(yīng)用造成鎖死產(chǎn)生的響應(yīng)時(shí)間增大。本發(fā)明提出一種多線程處理方法,包括分發(fā)線程獲取請(qǐng)求消息;所述分發(fā)線程根據(jù)所述請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊;所述分發(fā)線程將所述請(qǐng)求消息分發(fā)到所述資源塊對(duì)應(yīng)的處理線程。進(jìn)一步,所述分發(fā)線程將請(qǐng)求消息分發(fā)到資源塊對(duì)應(yīng)的線程包括所述分發(fā)線程根據(jù)所述資源塊預(yù)設(shè)的標(biāo)識(shí)位查找分配了對(duì)應(yīng)標(biāo)識(shí)位的處理線 程;將所述請(qǐng)求消息分發(fā)到對(duì)應(yīng)標(biāo)識(shí)位的處理線程。進(jìn)一步,所述將請(qǐng)求消息分發(fā)到對(duì)應(yīng)標(biāo)識(shí)位的處理線程具體為根據(jù)所述請(qǐng)求消息包含的參數(shù),發(fā)送所述參數(shù)到所述對(duì)應(yīng)標(biāo)識(shí)位的處理線程。進(jìn)一步,所述分發(fā)線程發(fā)送請(qǐng)求消息分發(fā)到資源塊對(duì)應(yīng)的處理線程包括分發(fā)線程將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到對(duì)應(yīng)的處理線程。進(jìn)一步,所述分發(fā)線程發(fā)送請(qǐng)求消息分發(fā)到資源塊對(duì)應(yīng)的線程后包括處理線程完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。一種多線程處理裝置,包括獲取模塊,用于獲取請(qǐng)求消息;
選擇模塊,用于根據(jù)所述請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊;分發(fā)模塊,用于將所述請(qǐng)求消息分發(fā)到所述資源塊對(duì)應(yīng)的處理線程。進(jìn)一步,所述分發(fā)模塊包括查找模塊,用于根據(jù)所述資源塊預(yù)設(shè)的標(biāo)識(shí)位查找分配了對(duì)應(yīng)標(biāo)識(shí)位的處理線 程;發(fā)送模塊,用于將所述請(qǐng)求消息分發(fā)到對(duì)應(yīng)標(biāo)識(shí)位的處理線程。進(jìn)一步,所述發(fā)送模塊具體用于根據(jù)所述請(qǐng)求消息包含的參數(shù),發(fā)送所述參數(shù)到 所述對(duì)應(yīng)標(biāo)識(shí)位的處理線程。進(jìn)一步,所述分發(fā)模塊還用于將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到 對(duì)應(yīng)的處理線程。進(jìn)一步,所述裝置還包括業(yè)務(wù)處理模塊,用于處理具體業(yè)務(wù)相關(guān)的流程;響應(yīng)模塊,用于完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。本發(fā)明實(shí)施例通過(guò)將資源分配為與線程對(duì)應(yīng)的資源塊,通過(guò)分發(fā)線程將請(qǐng)求分發(fā) 到資源塊對(duì)應(yīng)的線程上進(jìn)行處理,避免了資源鎖的使用及死鎖,提高了響應(yīng)速度。
圖1為本發(fā)明一種多線程處理方法一實(shí)施例的流程圖;圖2為本發(fā)明一種多線程處理方法一實(shí)施例的架構(gòu)示意圖;圖3為本發(fā)明一種多線程處理裝置一實(shí)施例的結(jié)構(gòu)示意圖。本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施例方式應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。參照?qǐng)D1,為本發(fā)明一種多線程處理方法一實(shí)施例的流程圖。本發(fā)明實(shí)施例預(yù)先根據(jù)共享資源的特性將資源劃分為多個(gè)塊,每塊資源設(shè)置一個(gè) 處理線程,每個(gè)線程只能訪問(wèn)劃分給它的對(duì)應(yīng)資源塊。預(yù)先設(shè)置一個(gè)分發(fā)線程來(lái)分發(fā)所有 來(lái)自外部的請(qǐng)求。分發(fā)線程根據(jù)請(qǐng)求攜帶的參數(shù)(例如用戶(hù)手機(jī)號(hào)碼、IP地址等等)確定 需要訪問(wèn)的資源塊,然后把該請(qǐng)求分發(fā)到資源塊對(duì)應(yīng)的線程進(jìn)行處理。架構(gòu)圖如圖2所示。具體的實(shí)施步驟以請(qǐng)求攜帶手機(jī)號(hào)碼為例進(jìn)行說(shuō)明。根據(jù)請(qǐng)求攜帶的參數(shù)(即手 機(jī)號(hào)碼)來(lái)劃分資源。因?yàn)楸4嬗脩?hù)信息需要占用系統(tǒng)內(nèi)存,根據(jù)手機(jī)號(hào)碼的尾號(hào)0到9 將系統(tǒng)需要使用的內(nèi)存劃分為10塊,并編號(hào)為0-9,為每塊內(nèi)存設(shè)置一個(gè)線程,這樣整個(gè)系 統(tǒng)就存在一個(gè)分發(fā)線程和10個(gè)處理線程。分發(fā)線程從請(qǐng)求中獲取特定參數(shù)手機(jī)號(hào)碼,根據(jù) 該參數(shù)定位到需要轉(zhuǎn)發(fā)的處理線程。處理線程收到來(lái)自分發(fā)線程的請(qǐng)求后訪問(wèn)各自的資源 塊完成業(yè)務(wù)處理。具體的如下步驟步驟S101、分發(fā)線程獲取請(qǐng)求消息;當(dāng)外部系統(tǒng)需要進(jìn)行一個(gè)關(guān)于手機(jī)號(hào)碼的處理時(shí),發(fā)送一個(gè)包含手機(jī)號(hào)碼的請(qǐng)求 消息。步驟S102、分發(fā)線程確定請(qǐng)求消息需要訪問(wèn)的資源塊;
分發(fā)線程根據(jù)請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊。分發(fā)線程解析 請(qǐng)求消息中的參數(shù),獲取到特定參數(shù),例如手機(jī)號(hào)碼,根據(jù)參數(shù)計(jì)算出需要分發(fā)到哪個(gè)業(yè)務(wù) 線程,如手機(jī)號(hào)碼的最后一位是3則應(yīng)當(dāng)發(fā)送到3號(hào)線程。步驟S103、分發(fā)線程將請(qǐng)求消息分發(fā)到資源塊對(duì)應(yīng)的處理線程。分發(fā)線程確定好請(qǐng)求消息需要訪問(wèn)的資源塊后,查找資源塊對(duì)應(yīng)的處理線程,然 后組裝分發(fā)消息,即在原請(qǐng)求消息的基礎(chǔ)上添加一些信息如請(qǐng)求發(fā)送方的相關(guān)信息如發(fā)送 方的IP和端口,然后轉(zhuǎn)發(fā)給對(duì)應(yīng)3號(hào)處理線程。在本發(fā)明實(shí)施例中,資源塊與線程都預(yù)先分配有標(biāo)識(shí)位,本發(fā)明實(shí)施例以ID作為 標(biāo)識(shí)位,而資源塊和其對(duì)應(yīng)的線程分配的ID是相同的。所以分發(fā)線程可以根據(jù)請(qǐng)求消息需 要訪問(wèn)的資源塊預(yù)設(shè)的ID查找分配了對(duì)應(yīng)ID的處理線程;然后將請(qǐng)求消息分發(fā)到對(duì)應(yīng)ID 的處理線程。分發(fā)線程負(fù)責(zé)分發(fā),不做任何業(yè)務(wù)處理,需要從請(qǐng)求消息中獲取必要的參數(shù),例如 用戶(hù)手機(jī)號(hào)碼、IP地址等等,該參數(shù)用于定位該請(qǐng)求需要訪問(wèn)的資源,例如根據(jù)手機(jī)號(hào)碼的 最后一位將該請(qǐng)求分發(fā)到對(duì)應(yīng)的處理線程,手機(jī)尾號(hào)為0的分發(fā)到0號(hào)處理線程,以此類(lèi) 推,尾號(hào)為9的分發(fā)到9號(hào)處理線程。定位到資源塊后,由于資源塊與處理線程是一一對(duì)應(yīng) 的關(guān)系,分發(fā)線程就可以將該請(qǐng)求消息分發(fā)到對(duì)應(yīng)的處理線程。分發(fā)線程需要將請(qǐng)求消息發(fā)送方的相關(guān)信息(如發(fā)送方的IP地址和端口等等) 跟隨請(qǐng)求消息一起分發(fā)到對(duì)應(yīng)的處理線程,本地不緩存請(qǐng)求消息的任何信息。進(jìn)一步的,分發(fā)線程將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到對(duì)應(yīng)的處 理線程,以便于處理線程處理完后根據(jù)發(fā)送方的相關(guān)信息發(fā)送響應(yīng)消息??稍黾拥牟襟ES104、處理線程完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。處理線程在收到請(qǐng)求后進(jìn)行相關(guān)的業(yè)務(wù)處理,然后直接向請(qǐng)求消息發(fā)送方返回響 應(yīng)消息,不再通過(guò)分發(fā)線程返回。在本發(fā)明實(shí)施例中處理線程只能訪問(wèn)屬于自己的資源塊,各處理線程完全獨(dú)立, 沒(méi)有交互,各資源塊也相互獨(dú)立,沒(méi)有關(guān)聯(lián)。由于各處理線程訪問(wèn)的是劃分給自己的獨(dú)占資 源塊,不存在互斥,因此不需要使用鎖。本發(fā)明實(shí)施例通過(guò)將資源分配為與線程對(duì)應(yīng)的資源塊,通過(guò)分發(fā)線程將請(qǐng)求分發(fā) 到資源塊對(duì)應(yīng)的線程上進(jìn)行處理,避免了資源鎖死,提高了響應(yīng)速度。請(qǐng)參閱圖3為本發(fā)明一種多線程處理裝置一實(shí)施例的結(jié)構(gòu)示意圖。本發(fā)明實(shí)施例提供一種多線程處理裝置,包括獲取模塊31,用于獲取請(qǐng)求消息;選擇模塊32,用于根據(jù)請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊;選擇模塊32根據(jù)請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊。選擇模塊 32解析請(qǐng)求消息中的參數(shù),獲取到特定參數(shù),例如手機(jī)號(hào)碼,根據(jù)參數(shù)計(jì)算出需要分發(fā)到哪 個(gè)業(yè)務(wù)線程,如手機(jī)號(hào)碼的最后一位是3則應(yīng)當(dāng)發(fā)送到3號(hào)線程。分發(fā)模塊33,用于將請(qǐng)求消息分發(fā)到資源塊對(duì)應(yīng)的處理線程。分發(fā)模塊33確定好請(qǐng)求消息需要訪問(wèn)的資源塊后,查找資源塊對(duì)應(yīng)的處理線程, 然后組裝分發(fā)消息,即在原請(qǐng)求消息的基礎(chǔ)上添加一些信息如請(qǐng)求發(fā)送方的相關(guān)信息如發(fā) 送方的IP和端口,然后轉(zhuǎn)發(fā)給對(duì)應(yīng)3號(hào)處理線程。
進(jìn)一步,分發(fā)模塊33包括查找模塊331,用于根據(jù)資源塊預(yù)設(shè)的ID查找分配了對(duì)應(yīng)ID的處理線程;在本發(fā)明實(shí)施例中,資源塊與線程都預(yù)先分配有ID,而資源塊和其對(duì)應(yīng)的線程分 配的ID是相同的。所以查找模塊331可以根據(jù)請(qǐng)求消息需要訪問(wèn)的資源塊預(yù)設(shè)的ID查找 分配了對(duì)應(yīng)ID的處理線程。發(fā)送模塊332,用于將請(qǐng)求消息分發(fā)到對(duì)應(yīng)ID的處理線程。進(jìn)一步,發(fā)送模塊332具體用于根據(jù)請(qǐng)求消息包含的參數(shù),發(fā)送參數(shù)到對(duì)應(yīng)ID的 處理線程。進(jìn)一步,分發(fā)模塊33還用于將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到 對(duì)應(yīng)的處理線程。進(jìn)一步,所述裝置還包括業(yè)務(wù)處理模塊34,用于進(jìn)行相關(guān)的業(yè)務(wù)處理。響應(yīng)模塊35,用于完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。處理線程在收到請(qǐng)求后由業(yè)務(wù)處理模塊34進(jìn)行相關(guān)的業(yè)務(wù)處理,然后響應(yīng)模塊 35直接向請(qǐng)求消息發(fā)送方返回響應(yīng)消息,不再通過(guò)分發(fā)線程返回。本發(fā)明實(shí)施例通過(guò)將資源分配為與線程對(duì)應(yīng)的資源塊,通過(guò)分發(fā)線程將請(qǐng)求分發(fā) 到資源塊對(duì)應(yīng)的線程上進(jìn)行處理,避免了資源鎖死,提高了響應(yīng)速度。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用 本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān) 的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。
權(quán)利要求
一種多線程處理方法,其特征在于,包括分發(fā)線程獲取請(qǐng)求消息;所述分發(fā)線程根據(jù)所述請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊;所述分發(fā)線程將所述請(qǐng)求消息分發(fā)到所述資源塊對(duì)應(yīng)的處理線程。
2.根據(jù)權(quán)利要求1所述的多線程處理方法,其特征在于,所述分發(fā)線程將請(qǐng)求消息分 發(fā)到資源塊對(duì)應(yīng)的線程包括所述分發(fā)線程根據(jù)所述資源塊預(yù)設(shè)的標(biāo)識(shí)位查找分配了對(duì)應(yīng)標(biāo)識(shí)位的處理線程; 將所述請(qǐng)求消息分發(fā)到對(duì)應(yīng)標(biāo)識(shí)位的處理線程。
3.根據(jù)權(quán)利要求2所述的多線程處理方法,其特征在于,所述將請(qǐng)求消息分發(fā)到對(duì)應(yīng) 標(biāo)識(shí)位的處理線程具體為根據(jù)所述請(qǐng)求消息包含的參數(shù),發(fā)送所述參數(shù)到所述對(duì)應(yīng)標(biāo)識(shí)位的處理線程。
4.根據(jù)權(quán)利要求1或2任一所述的多線程處理方法,其特征在于,所述分發(fā)線程發(fā)送請(qǐng) 求消息分發(fā)到資源塊對(duì)應(yīng)的處理線程包括分發(fā)線程將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到對(duì)應(yīng)的處理線程。
5.根據(jù)權(quán)利要求2任一所述多線程處理方法,其特征在于,所述分發(fā)線程發(fā)送請(qǐng)求消 息分發(fā)到資源塊對(duì)應(yīng)的線程后包括處理線程完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。
6.一種多線程處理裝置,其特征在于,包括 獲取模塊,用于獲取請(qǐng)求消息;選擇模塊,用于根據(jù)所述請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊; 分發(fā)模塊,用于將所述請(qǐng)求消息分發(fā)到所述資源塊對(duì)應(yīng)的處理線程。
7.根據(jù)權(quán)利要求6所述的多線程處理裝置,其特征在于,所述分發(fā)模塊包括 查找模塊,用于根據(jù)所述資源塊預(yù)設(shè)的標(biāo)識(shí)位查找分配了對(duì)應(yīng)標(biāo)識(shí)位的處理線程; 發(fā)送模塊,用于將所述請(qǐng)求消息分發(fā)到對(duì)應(yīng)標(biāo)識(shí)位的處理線程。
8.根據(jù)權(quán)利要求7所述的多線程處理裝置,其特征在于,所述發(fā)送模塊具體用于根據(jù) 所述請(qǐng)求消息包含的參數(shù),發(fā)送所述參數(shù)到所述對(duì)應(yīng)標(biāo)識(shí)位的處理線程。
9.根據(jù)權(quán)利要求6或7任一所述的多線程處理裝置,其特征在于,所述分發(fā)模塊還用于 將請(qǐng)求消息發(fā)送方的相關(guān)信息跟隨請(qǐng)求消息分發(fā)到對(duì)應(yīng)的處理線程。
10.根據(jù)權(quán)利要求7任一所述的多線程處理裝置,其特征在于,所述裝置還包括 業(yè)務(wù)處理模塊,用于處理具體業(yè)務(wù)相關(guān)的流程;響應(yīng)模塊,用于完成業(yè)務(wù)處理后,向請(qǐng)求發(fā)送方返回響應(yīng)消息。
全文摘要
本發(fā)明揭示了一種多線程處理方法,包括分發(fā)線程獲取請(qǐng)求消息;所述分發(fā)線程根據(jù)所述請(qǐng)求消息攜帶的參數(shù)確定需要訪問(wèn)的預(yù)設(shè)的資源塊;所述分發(fā)線程發(fā)送所述請(qǐng)求消息分發(fā)到所述資源塊對(duì)應(yīng)的處理線程。本發(fā)明實(shí)施例還提供相應(yīng)的裝置。本發(fā)明實(shí)施例通過(guò)將資源分配為與線程對(duì)應(yīng)的資源塊,通過(guò)分發(fā)線程將請(qǐng)求分發(fā)到資源塊對(duì)應(yīng)的線程上進(jìn)行處理,避免了資源鎖的使用及死鎖,提高了響應(yīng)速度。
文檔編號(hào)G06F9/38GK101826003SQ20101015257
公開(kāi)日2010年9月8日 申請(qǐng)日期2010年4月16日 優(yōu)先權(quán)日2010年4月16日
發(fā)明者吳麗梅, 李云, 歐陽(yáng)新志 申請(qǐng)人:中興通訊股份有限公司