專利名稱:一種線程調(diào)度管理方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及電通信技術(shù),尤其涉及一種線程調(diào)度管理方法和系統(tǒng)。
背景技術(shù):
目前,各種網(wǎng)絡(luò)通訊應(yīng)用系統(tǒng)一般都由多個(gè)模塊組成,隨著面向?qū)ο笤O(shè)計(jì)和方法的推廣和應(yīng)用,模塊之間的耦合性逐步降低,模塊之間基于消息的通訊就顯得非常重要,應(yīng)用較為廣泛。
網(wǎng)絡(luò)通訊應(yīng)用系統(tǒng)在處理多個(gè)線程消息(任務(wù))時(shí)一般都使用多線程來進(jìn)行處理,但是,在實(shí)際的應(yīng)用中,上層應(yīng)用程序需要知道底層對(duì)象的實(shí)現(xiàn)方法,并通過線程同步的技術(shù)來實(shí)現(xiàn)對(duì)多線程的調(diào)度和管理,由于底層對(duì)象的實(shí)現(xiàn)方法眾多,這種面向?qū)ο蟮木唧w設(shè)計(jì)和方法缺乏通用性,通用性的缺失便意謂著背離了面向?qū)ο蟮脑O(shè)計(jì)思路,對(duì)于多線程的調(diào)度和管理缺乏有效合理的方法,也給應(yīng)用系統(tǒng)的調(diào)試和維護(hù)帶來了很多問題和未知因素。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種高效、使用方便的線程調(diào)度管理方法和系統(tǒng),以克服現(xiàn)有技術(shù)中對(duì)于多線程的調(diào)度和管理缺乏有效合理方法的不足。
本發(fā)明所采用的線程調(diào)度管理方法包括如下步驟A、外部程序的線程消息調(diào)用線程管理模塊;
B、線程管理模塊通過隊(duì)列管理模塊將線程消息加入到消息隊(duì)列中;C、隊(duì)列管理模塊向線程池申請(qǐng)空閑線程;D、工作線程模塊加載所述線程消息;E、工作線程模塊執(zhí)行該線程消息。
所述的步驟A中,線程管理模塊被調(diào)用時(shí),線程管理模塊首先進(jìn)行初始化工作;所述的步驟A中,所述的初始化工作至少包含初始化消息隊(duì)列和線程池的初始大??;所述的步驟A中,線程管理模塊被調(diào)用的同時(shí),外部程序進(jìn)行外部線程切換,外部線程返回處理外部程序的后續(xù)消息;所述的步驟C中,隊(duì)列管理模塊通過監(jiān)視消息隊(duì)列狀態(tài),為新加入的線程消息申請(qǐng)空閑線程;所述的步驟D中,工作線程模塊從消息隊(duì)列中加載線程消息。
這種線程調(diào)度管理系統(tǒng),其特征在于至少包括線程管理模塊、隊(duì)列管理模塊和工作線程模塊,一個(gè)用于放置、加入線程消息的消息隊(duì)列,和一個(gè)用于工作線程模塊準(zhǔn)備的線程池,其中所述的線程管理模塊為外部調(diào)用的入口,向隊(duì)列管理模塊發(fā)出相應(yīng)控制指令,所述的隊(duì)列管理模塊和工作線程模塊根據(jù)控制指令進(jìn)行相應(yīng)處理;所述的線程管理模塊接收外部的調(diào)用命令,并向隊(duì)列管理模塊發(fā)出控制指令,在消息隊(duì)列中加入線程消息;所述的隊(duì)列管理模塊監(jiān)視消息隊(duì)列狀態(tài),接收線程管理模塊的控制指令,向線程池發(fā)送申請(qǐng)空閑線程指令,并向工作線程模塊發(fā)送加載、執(zhí)行命令;所述的工作線程模塊接收隊(duì)列管理模塊的指令,從所述消息隊(duì)列中向工作線程模塊加載線程消息,并執(zhí)行線程消息。
本發(fā)明的有益效果為在本發(fā)明中,采用面向?qū)ο笤O(shè)計(jì)技術(shù),使用非常方便,利用線程管理模塊作為外部調(diào)用的唯一入口,采用隊(duì)列管理模塊和工作線程模塊的處理,對(duì)線程消息進(jìn)行加載、執(zhí)行,對(duì)于外部應(yīng)用程序來說,在多線程的調(diào)度管理中,相當(dāng)于提供了通用的面對(duì)對(duì)象的入口,因此,本發(fā)明效率高、使用方便,在本發(fā)明的實(shí)際應(yīng)用中,可采用高移植性、通用性的程序語言封包,在應(yīng)用系統(tǒng)中可以很容易通過包含這種編譯過的程序包使用本發(fā)明的控制方法和流程,總之,本發(fā)明為網(wǎng)絡(luò)通訊應(yīng)用系統(tǒng)的多線程處理提供了一種高效、使用方便、移植性高、通用性強(qiáng)的方法。
圖1為本發(fā)明系統(tǒng)結(jié)構(gòu)示意圖;圖2為本發(fā)明基本控制流程示意圖;圖2為本發(fā)明應(yīng)用例控制流程示意圖。
具體實(shí)施例方式
下面根據(jù)附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明根據(jù)圖1,本發(fā)明包括線程管理模塊a、隊(duì)列管理模塊b和多個(gè)工作線程模塊,如圖1所示,可以有N個(gè)工作線程模塊,即工作線程模塊1、工作線程模塊2、…、工作線程模塊N,本發(fā)明還具有一個(gè)用于放置、加入線程消息的消息隊(duì)列d,和一個(gè)用于工作線程模塊準(zhǔn)備的線程池e,其中,線程管理模塊a為外部調(diào)用的入口,向隊(duì)列管理模塊b發(fā)出相應(yīng)控制指令,隊(duì)列管理模塊b和工作線程模塊根據(jù)控制指令進(jìn)行相應(yīng)處理。
如圖1所示,線程管理模塊a接收外部的調(diào)用命令,并向隊(duì)列管理模塊b發(fā)出控制指令,在消息隊(duì)列中加入線程消息;隊(duì)列管理模塊b監(jiān)視消息隊(duì)列狀態(tài),接收線程管理模塊a的控制指令,向線程池e發(fā)送申請(qǐng)空閑線程指令,并向工作線程模塊發(fā)送加載、執(zhí)行命令;工作線程模塊接收隊(duì)列管理模塊b的指令,向線程池e加載,執(zhí)行線程消息。
如圖2所示,本發(fā)明的基本控制流程如下1.外部程序的線程消息調(diào)用線程管理模塊a。
2.線程管理模塊a向隊(duì)列管理模塊b發(fā)送調(diào)用命令,隊(duì)列管理模塊b將線程消息加入到消息隊(duì)列d中。
3.隊(duì)列管理模塊b向線程池e中申請(qǐng)空閑線程。
4.申請(qǐng)到了空閑線程后,隊(duì)列管理模塊b向工作線程模塊發(fā)送加載、執(zhí)行命令。
5.工作線程模塊從消息隊(duì)列d中加載線程消息。
6.工作線程模塊執(zhí)行線程消息。
下面,如圖3所示,再以一具體應(yīng)用例反映本發(fā)明的具體控制流程,例如對(duì)于一個(gè)外部線程執(zhí)行網(wǎng)絡(luò)數(shù)據(jù)采集NetworkDataSampler的任務(wù),其具體控制流程如下1)外部程序的線程消息調(diào)用線程管理模塊a。
2)線程管理模塊a進(jìn)行初始化工作,初始化工作包含初始化消息隊(duì)列、線程池的初始大小、以及對(duì)隊(duì)列管理模塊b進(jìn)行初始化;同時(shí),由于外部線程需要執(zhí)行網(wǎng)絡(luò)數(shù)據(jù)采集NetworkDataSampler任務(wù),但該任務(wù)是個(gè)花費(fèi)時(shí)間的過程,外部線程又不能等待該任務(wù)執(zhí)行完成才返回,因此,外部線程就可以立即返回了。
3)初始化結(jié)束后,啟動(dòng)線程管理模塊a。
4)線程管理模塊a向隊(duì)列管理模塊b發(fā)送調(diào)用命令,隊(duì)列管理模塊b將線程消息加入到消息隊(duì)列d中。
5)隊(duì)列管理模塊b監(jiān)視消息隊(duì)列d的狀態(tài),監(jiān)視到有新的線程消息加入后,隊(duì)列管理模塊b向線程池e申請(qǐng)空閑線程。
6)若不存在空閑線程,則返回;直到存在空閑線程后,如圖1所示,存在一空閑線程,隊(duì)列管理模塊b向相應(yīng)的工作線程模塊發(fā)送加載、執(zhí)行命令,繼續(xù)如下步驟7)。
7)該工作線程模塊從消息隊(duì)列d中加載所述的線程消息。
8)該工作線程模塊執(zhí)行該線程消息,即,完成網(wǎng)絡(luò)數(shù)據(jù)采集NetworkDataSampler任務(wù)。
權(quán)利要求
1.一種線程調(diào)度管理方法,其特征在于它包括如下步驟A、外部程序的線程消息調(diào)用線程管理模塊;B、線程管理模塊通過隊(duì)列管理模塊將線程消息加入到消息隊(duì)列中;C、隊(duì)列管理模塊向線程池申請(qǐng)空閑線程;D、工作線程模塊加載所述線程消息;E、工作線程模塊執(zhí)行該線程消息。
2.根據(jù)權(quán)利要求1所述的線程調(diào)度管理方法,其特征在于所述的步驟A中,線程管理模塊被調(diào)用時(shí),線程管理模塊首先進(jìn)行初始化工作。
3.根據(jù)權(quán)利要求2所述的線程調(diào)度管理方法,其特征在于所述的步驟A中,所述的初始化工作至少包含初始化消息隊(duì)列和線程池的初始大小。
4.根據(jù)權(quán)利要求1所述的線程調(diào)度管理方法,其特征在于所述的步驟A中,線程管理模塊被調(diào)用的同時(shí),外部程序進(jìn)行外部線程切換,外部線程返回處理外部程序的后續(xù)消息。
5.根據(jù)權(quán)利要求1所述的線程調(diào)度管理方法,其特征在于所述的步驟C中,隊(duì)列管理模塊通過監(jiān)視消息隊(duì)列狀態(tài),為新加入的線程消息申請(qǐng)空閑線程。
6.根據(jù)權(quán)利要求1所述的線程調(diào)度管理方法,其特征在于所述的步驟D中,工作線程模塊從消息隊(duì)列中加載線程消息。
7.一種線程調(diào)度管理系統(tǒng),其特征在于至少包括線程管理模塊(a)、隊(duì)列管理模塊(b)和工作線程模塊,一個(gè)用于放置、加入線程消息的消息隊(duì)列(d),和一個(gè)用于工作線程模塊準(zhǔn)備的線程池(e),其中所述的線程管理模塊(a)為外部調(diào)用的入口,向隊(duì)列管理模塊(b)發(fā)出相應(yīng)控制指令,所述的隊(duì)列管理模塊(b)和工作線程模塊根據(jù)控制指令進(jìn)行相應(yīng)處理。
8.根據(jù)權(quán)利要求7所述的線程調(diào)度管理系統(tǒng),其特征在于所述的線程管理模塊(a)接收外部的調(diào)用命令,并向隊(duì)列管理模塊(b)發(fā)出控制指令,在消息隊(duì)列(d)中加入線程消息。
9.根據(jù)權(quán)利要求7所述的線程調(diào)度管理系統(tǒng),其特征在于所述的隊(duì)列管理模塊(b)監(jiān)視消息隊(duì)列狀態(tài),接收線程管理模塊(a)的控制指令,向線程池(e)發(fā)送申請(qǐng)空閑線程指令,并向工作線程模塊發(fā)送加載、執(zhí)行命令。
10.根據(jù)權(quán)利要求7所述的線程調(diào)度管理系統(tǒng),其特征在于所述的工作線程模塊接收隊(duì)列管理模塊(b)的指令,從所述消息隊(duì)列(d)中向工作線程模塊加載線程消息,并執(zhí)行線程消息。
全文摘要
一種涉及電通信技術(shù)的線程調(diào)度管理方法和系統(tǒng),包括如下步驟A、外部程序的線程消息調(diào)用線程管理模塊,B、線程管理模塊通過隊(duì)列管理模塊將線程消息加入到消息隊(duì)列中,C、隊(duì)列管理模塊向線程池申請(qǐng)空閑線程,D、工作線程模塊加載線程消息,E、工作線程模塊執(zhí)行線程消息;步驟A中,線程管理模塊被調(diào)用時(shí),線程管理模塊首先進(jìn)行初始化工作;步驟A中,初始化工作至少包含初始化消息隊(duì)列和線程池的初始大小;步驟C中,隊(duì)列管理模塊通過監(jiān)視消息隊(duì)列狀態(tài),為新加入的線程消息申請(qǐng)空閑線程,本發(fā)明為網(wǎng)絡(luò)通訊應(yīng)用系統(tǒng)的多線程處理提供了一種高效、使用方便、移植性高、通用性強(qiáng)的方法。
文檔編號(hào)G06F9/46GK1740974SQ200510021698
公開日2006年3月1日 申請(qǐng)日期2005年9月14日 優(yōu)先權(quán)日2005年9月14日
發(fā)明者鄭春華 申請(qǐng)人:艾默生網(wǎng)絡(luò)能源有限公司