專利名稱:多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通訊領(lǐng)域,尤其涉及一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置和方法。
背景技術(shù):
多任務(wù)軟件系統(tǒng)是指可以同時(shí)處理多個(gè)事件的軟件系統(tǒng),在實(shí)際應(yīng)用中,該多個(gè)事件并發(fā)的情況可能非常復(fù)雜。比如如果一個(gè)多任務(wù)軟件系統(tǒng)有10個(gè)可并發(fā)事件,則這10個(gè)事件的單次并發(fā)情況就會(huì)有10!/9!+10!/8!+10!/7!+10!/6!+10!/5!+10!/4!+10!/3!+10!/2!+10!/1?。?,235,300種。因此,如果多任務(wù)軟件系統(tǒng)的實(shí)現(xiàn)是按照多個(gè)事件的各種并發(fā)情況分別進(jìn)行處理,必將導(dǎo)致多任務(wù)軟件系統(tǒng)的開發(fā)過程是非常艱難而痛苦的,多任務(wù)軟件系統(tǒng)的實(shí)現(xiàn)是非常龐大而復(fù)雜的。
由于多任務(wù)軟件系統(tǒng)同時(shí)處理的多個(gè)事件的事件類型、事件處理方式等的不同,該多個(gè)事件之間可能存在并發(fā)沖突,即該多個(gè)事件中一種類型的事件在被處理時(shí),另一種類型的事件不能同時(shí)被處理。因此,通常需要制定一個(gè)多任務(wù)軟件系統(tǒng)的并發(fā)規(guī)則,該并發(fā)規(guī)則根據(jù)多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件之間的沖突情況,規(guī)定了多任務(wù)軟件系統(tǒng)如何處理所有可并發(fā)事件。
現(xiàn)有技術(shù)中一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法為為每一個(gè)多任務(wù)軟件系統(tǒng)中可并發(fā)的事件設(shè)置一個(gè)狀態(tài)標(biāo)志,該狀態(tài)標(biāo)志標(biāo)識(shí)該事件是否正在處理中。當(dāng)某一個(gè)事件需要被處理時(shí),根據(jù)多任務(wù)軟件系統(tǒng)的所有可并發(fā)事件的狀態(tài)標(biāo)志以及多任務(wù)軟件系統(tǒng)的并發(fā)規(guī)則,決定該事件是否可以被并發(fā)處理,并決定其他事件該如何處理。
該方法的缺點(diǎn)為該方法只適合于并發(fā)事件比較少的多任務(wù)軟件系統(tǒng)。由于上述的多任務(wù)軟件系統(tǒng)的并發(fā)規(guī)則是固化在編碼中的,當(dāng)有新的事件加入或原有的事件需要剔除時(shí),就需要對(duì)該并發(fā)規(guī)則進(jìn)行調(diào)整,因?yàn)樵摬l(fā)規(guī)則是固化在多任務(wù)軟件系統(tǒng)的所有事件處理過程的編碼中,因此,對(duì)該并發(fā)規(guī)則的調(diào)整將涉及到多任務(wù)軟件系統(tǒng)的所有事件處理過程,使得多任務(wù)軟件系統(tǒng)的維護(hù)工作變得極其繁重。
發(fā)明內(nèi)容
鑒于上述現(xiàn)有技術(shù)所存在的問題,本發(fā)明的目的是提供一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的調(diào)度裝置和方法,從而使得多任務(wù)軟件系統(tǒng)的并發(fā)事件處理設(shè)計(jì)以及實(shí)現(xiàn)更加簡(jiǎn)單,使得多任務(wù)軟件系統(tǒng)的維護(hù)工作更加方便。
本發(fā)明的目的是通過以下技術(shù)方案實(shí)現(xiàn)的一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,包括任務(wù)模塊用于在多任務(wù)軟件系統(tǒng)中的可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并根據(jù)并發(fā)處理模塊返回的該事件的并發(fā)控制信息,對(duì)該事件進(jìn)行相應(yīng)的處理;并發(fā)處理模塊用于維護(hù)多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和任務(wù)模塊提交過來的事件的狀態(tài)信息,根據(jù)該并發(fā)規(guī)則和狀態(tài)信息,生成接收到的提交事件的并發(fā)控制信息,并將該并發(fā)控制信息傳遞給任務(wù)模塊。
所述的任務(wù)模塊具體包括事件提交模塊用于當(dāng)可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并接收并發(fā)處理模塊返回的該事件的并發(fā)控制信息,將該并發(fā)控制信息傳遞給事件處理模塊,將事件處理模塊返回的事件處理狀態(tài)信息傳遞給并發(fā)處理模塊;
事件處理模塊用于根據(jù)接收到的并發(fā)控制信息,對(duì)相應(yīng)的可并發(fā)事件進(jìn)行相應(yīng)的事務(wù)處理或者將該可并發(fā)事件掛起或者將該可并發(fā)事件丟棄,并返回事件處理狀態(tài)信息給事件提交模塊。
所述的任務(wù)模塊還包括事件標(biāo)識(shí)模塊用于當(dāng)可并發(fā)事件需要被處理時(shí),生成在多任務(wù)軟件系統(tǒng)的整個(gè)運(yùn)行期內(nèi)唯一標(biāo)識(shí)該事件的事件標(biāo)識(shí),并將該事件標(biāo)識(shí)傳遞給事件處理模塊和事件提交模塊。
所述的并發(fā)處理模塊具體包括并發(fā)規(guī)則模塊用于定義和維護(hù)多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則,并通過接口將該并發(fā)規(guī)則傳遞給并發(fā)控制和調(diào)度模塊;并發(fā)控制和調(diào)度模塊用于維護(hù)所有接收到的提交事件的狀態(tài)信息,并根據(jù)該狀態(tài)信息和接收到的并發(fā)規(guī)則,生成接收到的提交事件的并發(fā)控制信息,并將該并發(fā)控制信息返回給任務(wù)模塊。
所述的并發(fā)規(guī)則模塊包括并發(fā)規(guī)則矩陣模塊用于使用矩陣來集中表示多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則。
所述的并發(fā)控制和調(diào)度模塊具體包括并發(fā)調(diào)度模塊用于維護(hù)所有正在處理的和所有處于等待處理狀態(tài)的事件的狀態(tài)信息,其中包括事件的類型和優(yōu)先級(jí)信息,并將該事件狀態(tài)信息傳遞給并發(fā)控制模塊;并發(fā)控制模塊用于根據(jù)接收到的并發(fā)規(guī)則和并發(fā)調(diào)度模塊傳遞過來的事件狀態(tài)信息,確定接收到的提交事件的狀態(tài)信息,并生成相應(yīng)的并發(fā)控制信息,將該并發(fā)控制信息傳遞給任務(wù)模塊;事件處理狀態(tài)信息接收模塊用于接收任務(wù)模塊返回的事件處理狀態(tài)信息,當(dāng)接收到事件處理完畢的狀態(tài)信息后,則通知并發(fā)調(diào)度模塊將處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件提交給并發(fā)控制模塊。
所述的并發(fā)調(diào)度模塊包括當(dāng)前正在處理的事件列表用于按照優(yōu)先級(jí)從高到低排列所有正在處理的事件;等待處理的事件列表用于按照優(yōu)先級(jí)從高到低排列所有正處于等待處理狀態(tài)的事件。
所述的并發(fā)控制模塊具體包括并發(fā)判斷模塊用于根據(jù)接收到的并發(fā)規(guī)則,判斷接收到的提交事件當(dāng)前能不能并發(fā),如果能并發(fā),則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,生成該事件的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊;如果不能并發(fā),則將該事件提交給優(yōu)先級(jí)判斷模塊;優(yōu)先級(jí)判斷模塊用于在當(dāng)前正在處理的事件列表中找出所有與提交事件存在并發(fā)沖突的事件,然后判斷提交事件的優(yōu)先級(jí)是否大于所有查找出來的事件的優(yōu)先級(jí),如果是,則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,將所有查找出來的事件加入等待處理的事件列表或丟棄;否則,將該事件加入等待處理的事件列表,然后生成相應(yīng)的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊。
所述的并發(fā)控制模塊包括當(dāng)前的并發(fā)規(guī)則生成模塊用于根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表,并把該表傳遞給并發(fā)判斷模塊。
一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,包括A、設(shè)置多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和優(yōu)先級(jí)信息;B、根據(jù)所述設(shè)置的信息,對(duì)多任務(wù)軟件系統(tǒng)中需要被處理的可并發(fā)事件進(jìn)行相應(yīng)的處理。
所述的步驟A還包括根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表。
所述的步驟B具體包括B1、根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,判斷當(dāng)前需要被處理的可并發(fā)事件能不能并發(fā),如果能,則執(zhí)行步驟B2;否則,執(zhí)行步驟B3;B2、確定當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理;B3、根據(jù)所述需要被處理的可并發(fā)事件的優(yōu)先級(jí)和存在并發(fā)沖突的所有事件的優(yōu)先級(jí)之間的關(guān)系,確定該需要被處理的可并發(fā)事件能不能并發(fā)。
所述的步驟B3具體包括B31、在當(dāng)前正在處理的事件中找出所有與該需要被處理的可并發(fā)事件存在并發(fā)沖突的事件,如果該需要被處理的可并發(fā)事件的優(yōu)先級(jí)大于所有查找到的事件的優(yōu)先級(jí),則執(zhí)行步驟B32;否則,執(zhí)行步驟B33;B32、確定需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理,將查找到的事件的狀態(tài)更新為等待處理狀態(tài)并將該事件掛起,或者,將查找到的事件直接丟棄;B33、確定該當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為等待處理狀態(tài),將該事件掛起。
所述的步驟B還包括在多任務(wù)軟件系統(tǒng)中一個(gè)正在處理的事件處理完畢后,則處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件成為當(dāng)前需要被處理的可并發(fā)事件。
由上述本發(fā)明提供的技術(shù)方案可以看出,本發(fā)明和現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn)
1、本發(fā)明采用集中的并發(fā)控制與并發(fā)調(diào)度處理策略,使得多任務(wù)軟件系統(tǒng)的并發(fā)事件處理設(shè)計(jì)以及實(shí)現(xiàn)更加簡(jiǎn)單,使得多任務(wù)軟件系統(tǒng)的并發(fā)事件處理修改以及維護(hù)更加方便。
2、本發(fā)明將事件的并發(fā)控制、并發(fā)調(diào)度與事件的具體處理相分離,將事件的并發(fā)控制與事件的并發(fā)調(diào)度相分離,使得多任務(wù)軟件系統(tǒng)的開發(fā)人員可以集中精力在事件并發(fā)規(guī)則的定義,事件并發(fā)調(diào)度算法的優(yōu)化,以及事件的正確處理,而不必關(guān)心錯(cuò)綜復(fù)雜的事件并發(fā)情況以及事件并發(fā)沖突。
3、在本發(fā)明中,任務(wù)可以訪問處理事件列表,并可以獲取當(dāng)前正在處理的所有事件信息,從而使得任務(wù)可以依據(jù)當(dāng)前正在處理的事件信息,對(duì)相應(yīng)事件的處理過程和處理方法進(jìn)行適當(dāng)?shù)膬?yōu)化或調(diào)整。
圖1為本發(fā)明所述裝置的具體結(jié)構(gòu)圖;圖2為本發(fā)明所述實(shí)施例的基本結(jié)構(gòu)圖;圖3為本發(fā)明所述實(shí)施例中多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置的結(jié)構(gòu)圖;圖4為本發(fā)明所述實(shí)施例在任務(wù)提交事件時(shí)的并發(fā)控制與并發(fā)調(diào)度處理流程圖;圖5為本發(fā)明所述實(shí)施例在收到事件處理完成確認(rèn)消息后的并發(fā)控制與并發(fā)調(diào)度處理流程圖;圖6為本發(fā)明所述方法的具體處理流程圖。
具體實(shí)施例方式
本發(fā)明提供了一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的調(diào)度裝置和方法。本發(fā)明的核心為在多任務(wù)軟件系統(tǒng)中,采用集中的并發(fā)控制與并發(fā)調(diào)度處理策略,將事件的并發(fā)控制、并發(fā)調(diào)度與事件的具體處理相分離,將事件的并發(fā)控制與事件的并發(fā)調(diào)度相分離。
下面結(jié)合附圖來詳細(xì)描述本發(fā)明,本發(fā)明所述裝置的具體結(jié)構(gòu)圖如圖1所示,包括如下模塊任務(wù)模塊、用于在多任務(wù)軟件系統(tǒng)中的可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并根據(jù)并發(fā)處理模塊返回的該事件的并發(fā)控制信息,對(duì)該事件進(jìn)行相應(yīng)的處理。任務(wù)模塊包括事件標(biāo)識(shí)模塊、事件提交模塊和事件處理模塊。
其中,事件標(biāo)識(shí)模塊、用于根據(jù)接收到的事件提交模塊傳遞過來的申請(qǐng),生成一個(gè)唯一的事件標(biāo)識(shí),然后,將該事件標(biāo)識(shí)傳遞給事件處理模塊和事件提交模塊。該事件標(biāo)識(shí)由事件標(biāo)識(shí)模塊統(tǒng)一分配并管理,在多任務(wù)軟件系統(tǒng)的整個(gè)運(yùn)行期內(nèi)唯一標(biāo)識(shí)該事件。
其中,事件提交模塊、用于當(dāng)接收到事件標(biāo)識(shí)模塊傳遞過來的事件標(biāo)識(shí)后,將該事件標(biāo)識(shí)所標(biāo)識(shí)的事件提交給并發(fā)處理模塊,并接收并發(fā)處理模塊返回的該事件的并發(fā)控制信息,將該并發(fā)控制信息傳遞給事件處理模塊。
其中,事件處理模塊、用于根據(jù)接收到的事件的并發(fā)控制信息和事件標(biāo)識(shí),對(duì)該事件進(jìn)行相應(yīng)的處理,包括將該事件暫時(shí)掛起或丟棄,或者進(jìn)行其它適當(dāng)?shù)奶幚聿⒃谔幚硗戤吅蠓祷貭顟B(tài)信息給并發(fā)處理模塊。
并發(fā)處理模塊、用于維護(hù)多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則,根據(jù)該并發(fā)規(guī)則和所有正在處理的事件的類型和優(yōu)先級(jí)信息,生成任務(wù)模塊提交過來的需要被處理的事件的并發(fā)控制信息,并將該并發(fā)控制信息返回給任務(wù)模塊。并發(fā)處理模塊包括并發(fā)控制和調(diào)度模塊和并發(fā)規(guī)則模塊。
其中,并發(fā)規(guī)則模塊、用于定義和維護(hù)多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則,并將該并發(fā)規(guī)則傳遞給并發(fā)控制和調(diào)度模塊,該并發(fā)規(guī)則可以通過矩陣來表示。因此,并發(fā)規(guī)則模塊可以包括并發(fā)規(guī)則矩陣模塊,并發(fā)規(guī)則矩陣模塊用于使用矩陣來集中表示多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則。
其中,并發(fā)控制和調(diào)度模塊、用于根據(jù)接收到的并發(fā)規(guī)則,和任務(wù)模塊提交過來的需要被處理的事件的類型和優(yōu)先級(jí)信息,以及所有正在處理的事件的類型和優(yōu)先級(jí)信息,生成針對(duì)任務(wù)模塊提交過來的事件的并發(fā)控制信息,并將該并發(fā)控制信息返回給任務(wù)模塊。并發(fā)控制和調(diào)度模塊包括并發(fā)控制模塊、并發(fā)調(diào)度模塊和事件處理狀態(tài)信息接收模塊。
其中,并發(fā)調(diào)度模塊、用于維護(hù)所有正在處理的和處于等待處理的事件的類型和優(yōu)先級(jí)信息等事件狀態(tài)信息,所有正在處理的和處于等待處理的事件按照其優(yōu)先級(jí)從高到低進(jìn)行排序,分別構(gòu)成當(dāng)前正在處理的事件列表和等待處理的事件列表。
其中,事件處理狀態(tài)信息接收模塊、用于接收任務(wù)模塊返回的事件處理狀態(tài)信息,當(dāng)接收到事件處理完畢的狀態(tài)信息后,則通知并發(fā)調(diào)度模塊將處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件提交給并發(fā)控制模塊。
其中,并發(fā)控制模塊、用于根據(jù)接收到的并發(fā)規(guī)則和所有正在處理的事件的類型,生成并維護(hù)多任務(wù)軟件系統(tǒng)當(dāng)前的并發(fā)規(guī)則列表。根據(jù)該當(dāng)前的并發(fā)規(guī)則列表和并發(fā)調(diào)度模塊傳遞過來的事件信息,對(duì)提交事件進(jìn)行相應(yīng)的處理,生成相應(yīng)的并發(fā)控制信息,并將該并發(fā)控制信息返回給任務(wù)模塊。并發(fā)控制模塊包括并發(fā)判斷模塊、優(yōu)先級(jí)判斷模塊和當(dāng)前的并發(fā)規(guī)則生成模塊。
并發(fā)判斷模塊用于根據(jù)接收到的并發(fā)規(guī)則,判斷接收到的提交事件當(dāng)前能不能并發(fā),如果能并發(fā),則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,通知當(dāng)前的并發(fā)規(guī)則生成模塊更新當(dāng)前的并發(fā)規(guī)則列表,生成該事件的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊,該信息可以通知負(fù)責(zé)處理該提交事件的任務(wù)進(jìn)行相應(yīng)事件處理;如果不能并發(fā),則將該事件提交給優(yōu)先級(jí)判斷模塊;優(yōu)先級(jí)判斷模塊用于在當(dāng)前正在處理的事件列表中找出所有與提交事件存在并發(fā)沖突的事件,然后判斷提交事件的優(yōu)先級(jí)是否大于所有查找出來的事件的優(yōu)先級(jí),如果是,則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,將所有查找出來的事件加入等待處理的事件列表或丟棄,通知當(dāng)前的并發(fā)規(guī)則生成模塊更新當(dāng)前的并發(fā)規(guī)則列表;否則,將該事件加入等待處理的事件列表,然后生成相應(yīng)的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊。
當(dāng)前的并發(fā)規(guī)則生成模塊用于根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表,并把該表傳遞給并發(fā)判斷模塊。
本發(fā)明提供了一個(gè)上面所述裝置的具體實(shí)施例,該實(shí)施例的基本結(jié)構(gòu)圖如圖2所示。
在圖2所示的本發(fā)明所述實(shí)施例的基本結(jié)構(gòu)圖中,包括多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置和任務(wù)模塊。多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置的結(jié)構(gòu)圖如圖3所示。包括事件標(biāo)識(shí)模塊、基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊、基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊和并發(fā)規(guī)則模塊。該實(shí)施例的具體工作過程如下任務(wù)模塊由多個(gè)子任務(wù)模塊組成,每一個(gè)子任務(wù)模塊都有一個(gè)唯一的任務(wù)標(biāo)識(shí),負(fù)責(zé)既定事件的處理。
為了更好地描述該實(shí)施例,我們先介紹一下多任務(wù)軟件系統(tǒng)的并發(fā)規(guī)則的概念。
假設(shè)多任務(wù)軟件系統(tǒng)共有A,B,C,D,E,F(xiàn),G等7個(gè)可并發(fā)事件類型。其中事件類型為A的事件的并發(fā)規(guī)則如表1所示。則該并發(fā)規(guī)則定義,事件類型為A的事件發(fā)生時(shí),事件類型為A,B,D,F(xiàn)的事件可以被并發(fā)處理,事件類型為C,E,G的事件不能被并發(fā)處理。其中事件類型為B的事件的并發(fā)規(guī)則如表2所示。則該并發(fā)規(guī)則定義,事件類型為B的事件發(fā)生時(shí),事件類型為A,C,D的事件可以被并發(fā)處理,而事件類型為B,E,F(xiàn),G的事件不能被并發(fā)處理。
表1 事件類型為A的事件的并發(fā)規(guī)則
表2 事件類型為B的事件的并發(fā)規(guī)則
在該實(shí)施例中,多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置中的并發(fā)規(guī)則模塊負(fù)責(zé)定義和維護(hù)所有可并發(fā)事件類型的并發(fā)規(guī)則,該并發(fā)規(guī)則可以通過并發(fā)規(guī)則矩陣來表示。并發(fā)規(guī)則模塊需要根據(jù)該并發(fā)規(guī)則矩陣,通過并發(fā)規(guī)則模塊接口向基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊提供相應(yīng)事件類型的并發(fā)規(guī)則。
比如,假設(shè)多任務(wù)軟件系統(tǒng)共有A,B,C,D,E,F(xiàn),G等7個(gè)可并發(fā)事件類型,則該多任務(wù)軟件系統(tǒng)的所有可并發(fā)事件類型的并發(fā)規(guī)則矩陣可定義為表3的形式,行定義為正在并發(fā)的事件類型,列定義為對(duì)應(yīng)該并發(fā)事件類型的其他事件類型的并發(fā)規(guī)則。
表3 各種事件類型的并發(fā)規(guī)則矩陣
在多任務(wù)軟件系統(tǒng)初始化或者當(dāng)前系統(tǒng)沒有事件發(fā)生時(shí),維護(hù)在基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊中的多任務(wù)軟件系統(tǒng)當(dāng)前的并發(fā)規(guī)則列表各項(xiàng)全部為真。即此時(shí)允許任何一個(gè)可并發(fā)事件并發(fā)。
在多任務(wù)軟件系統(tǒng)中有單一事件類型發(fā)生或并發(fā)時(shí),則多任務(wù)軟件系統(tǒng)當(dāng)前的并發(fā)規(guī)則列表就是該事件類型的并發(fā)規(guī)則列表。當(dāng)有多個(gè)事件類型并發(fā)時(shí),則基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊通過并發(fā)規(guī)則模塊接口獲取相應(yīng)事件類型的并發(fā)規(guī)則列表,將這些并發(fā)規(guī)則列表各項(xiàng)進(jìn)行與運(yùn)算,就獲得當(dāng)前的并發(fā)規(guī)則列表。
比如,當(dāng)多任務(wù)軟件系統(tǒng)中只有事件類型為A的事件發(fā)生時(shí),則當(dāng)前的并發(fā)規(guī)則列表如表4所示。該并發(fā)規(guī)則列表表示此時(shí)多任務(wù)軟件系統(tǒng)只允許事件類型為A,B,D,F(xiàn)的事件并發(fā)處理,而事件類型為C,E,G的事件不能被并發(fā)處理。
如果此時(shí)事件類型為B的事件又并發(fā)(因?yàn)楦鶕?jù)此時(shí)的并發(fā)規(guī)則列表,事件類型為B的事件可以被并發(fā)處理),則基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊通過并發(fā)規(guī)則模塊接口獲取事件B的并發(fā)規(guī)則列表,然后,將表1所示的事件A的并發(fā)規(guī)則列表和表2所示的事件B的并發(fā)規(guī)則列表各項(xiàng)相與,將得到如表5所示的當(dāng)前的并發(fā)規(guī)則列表。該并發(fā)規(guī)則列表表示此時(shí)多任務(wù)軟件系統(tǒng)只允許事件類型為A,D的事件并發(fā)處理,而事件類型為B,C,E,F(xiàn),G的事件不能被并發(fā)處理。
如果此時(shí)事件類型為A的事件處理完成(此時(shí)多任務(wù)軟件系統(tǒng)只有事件類型為B的事件在被處理),則當(dāng)前的并發(fā)規(guī)則列表又會(huì)被更新為表6所示。該并發(fā)規(guī)則列表表示此時(shí)多任務(wù)軟件系統(tǒng)只允許事件類型為A,C,D的事件并發(fā)處理,而事件類型為B,E,F(xiàn),G的事件不能被并發(fā)處理。
表4 事件類型為A的事件發(fā)生時(shí)的并發(fā)規(guī)則列表
表5 事件類型為A與B的事件發(fā)生時(shí)的并發(fā)規(guī)則列表
表6 事件類型為B的事件發(fā)生時(shí)的并發(fā)規(guī)則列表
多任務(wù)軟件系統(tǒng)中的每一個(gè)可并發(fā)事件都有其事件優(yōu)先級(jí)和搶占方式。事件優(yōu)先級(jí)用于標(biāo)識(shí)該事件的優(yōu)先處理等級(jí),搶占方式用于標(biāo)識(shí)該提交事件正在處理時(shí),如果高優(yōu)先級(jí)事件發(fā)生而且該提交事件被搶占后,該提交事件的處理方式,其中包括該提交事件可以被丟棄或者被掛起。
當(dāng)多任務(wù)軟件系統(tǒng)中的一個(gè)可并發(fā)事件需要被處理時(shí),負(fù)責(zé)處理該事件的子任務(wù)模塊便向多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置申請(qǐng)一個(gè)事件標(biāo)識(shí)。該事件標(biāo)識(shí)由多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置中的事件標(biāo)識(shí)模塊統(tǒng)一分配并管理,以保證在多任務(wù)軟件系統(tǒng)的整個(gè)運(yùn)行期內(nèi)唯一標(biāo)識(shí)該事件。子任務(wù)模塊獲取到多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置返回的事件標(biāo)識(shí)后,便將該事件提交給多個(gè)事件并發(fā)控制與調(diào)度裝置。
多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置接收到提交事件后,對(duì)該提交事件進(jìn)行并發(fā)控制和并發(fā)調(diào)度處理。具體的處理過程如圖4所示,包括如下步驟步驟4-1、向多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置提交事件。
當(dāng)多任務(wù)軟件系統(tǒng)中的一個(gè)可并發(fā)事件需要被處理時(shí),子任務(wù)模塊向多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置獲取到事件標(biāo)識(shí)后,便將該事件提交給多個(gè)事件并發(fā)控制與調(diào)度裝置。
步驟4-2、判斷該提交事件是否可以并發(fā)處理。
多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置接收到提交事件后,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊根據(jù)當(dāng)前的并發(fā)規(guī)則列表和提交事件的類型信息,判斷該提交事件是否可以并發(fā)處理。如果是,則執(zhí)行步驟4-3;否則,執(zhí)行步驟4-4。
步驟4-3、將提交事件加入處理事件列表。
如果基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊依據(jù)當(dāng)前的并發(fā)規(guī)則列表,判定該提交事件可以并發(fā),即提交事件當(dāng)前可以被處理,則通知基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊按照其優(yōu)先級(jí)將該提交事件加入當(dāng)前正在處理的事件列表,并根據(jù)該提交事件的事件類型更新當(dāng)前的并發(fā)規(guī)則列表。然后,根據(jù)提交事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理該提交事件的子任務(wù)模塊進(jìn)行相應(yīng)事件處理。
步驟4-4、確定正在處理的事件當(dāng)中與該提交事件存在并發(fā)沖突的所有事件。
如果基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊依據(jù)當(dāng)前的并發(fā)規(guī)則列表,判定該提交事件不可以并發(fā),即依據(jù)當(dāng)前的并發(fā)規(guī)則,存在當(dāng)前正在處理的事件與該提交事件的并發(fā)沖突。于是,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊查看基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊中的當(dāng)前正在處理的事件列表,逐個(gè)找出與該提交事件存在并發(fā)沖突的事件,然后,執(zhí)行步驟4-5。
步驟4-5、判斷提交事件的優(yōu)先級(jí)是否高于存在并發(fā)沖突的所有事件。
基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊判斷提交事件的優(yōu)先級(jí)是否高于查找到的存在并發(fā)沖突的所有事件,如果是,則執(zhí)行步驟4-7;否則,執(zhí)行步驟4-6。
步驟4-6、將提交事件加入等待事件列表。
如果該提交事件的優(yōu)先級(jí)較低,低于存在并發(fā)沖突的所有事件中優(yōu)先級(jí)最高的事件,則基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊通知基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊按照其優(yōu)先級(jí)將該提交事件加入等待處理的事件列表。然后,根據(jù)提交事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理該提交事件的子任務(wù)模塊將該提交事件暫時(shí)掛起。
步驟4-7、將提交事件加入處理事件列表,將存在并發(fā)沖突的所有事件掛取或放棄。
如果該提交事件的優(yōu)先級(jí)較高,高于存在并發(fā)沖突的所有事件的優(yōu)先級(jí)。于是,多個(gè)事件并發(fā)控制與調(diào)度裝置就會(huì)根據(jù)所有當(dāng)前正在處理的存在并發(fā)沖突的所有事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理所有這些事件的子任務(wù)模塊根據(jù)所有這些事件的搶占方式,丟棄或者暫時(shí)掛起所有這些當(dāng)前正在處理的存在并發(fā)沖突的事件。對(duì)于丟棄的事件,基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊將該事件從當(dāng)前正在處理的事件列表中去除。對(duì)于掛起的事件,基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊將該事件從當(dāng)前正在處理的事件列表中去除后,將其按照事件的優(yōu)先級(jí)加入等待處理的事件列表。同時(shí),負(fù)責(zé)該事件處理的子任務(wù)模塊對(duì)被掛起的事件進(jìn)行保存相關(guān)數(shù)據(jù)等適當(dāng)?shù)奶幚怼?br>
然后。基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊按照其優(yōu)先級(jí)將該提交事件加入當(dāng)前正在處理的事件列表,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊根據(jù)該提交事件的事件類型更新當(dāng)前的并發(fā)規(guī)則列表。根據(jù)提交事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理該提交事件的子任務(wù)模塊進(jìn)行相應(yīng)事件處理。
在該實(shí)施例中,為了讓多個(gè)事件并發(fā)控制與調(diào)度裝置及時(shí)正確地了解各事件的當(dāng)前狀態(tài),任務(wù)模塊需要向多個(gè)事件并發(fā)控制與調(diào)度裝置返回事件調(diào)度狀態(tài)確認(rèn)信息。任務(wù)模塊需要返回事件調(diào)度狀態(tài)確認(rèn)信息的情況如下1、多個(gè)事件并發(fā)控制與調(diào)度裝置通知任務(wù)處理事件時(shí),任務(wù)模塊返回確認(rèn)收到事件處理通知;2、多個(gè)事件并發(fā)控制與調(diào)度裝置通知任務(wù)掛起事件時(shí),任務(wù)模塊返回確認(rèn)收到事件掛起通知;3、多個(gè)事件并發(fā)控制與調(diào)度裝置通知任務(wù)丟棄事件時(shí),任務(wù)模塊返回確認(rèn)收到事件丟棄通知;4、在任何事件處理完成時(shí),任務(wù)模塊向多個(gè)事件并發(fā)控制與調(diào)度裝置返回確認(rèn)事件處理完成。
在上述的四種情況中,事件處理完成時(shí)的狀態(tài)確認(rèn)信息上報(bào)是必須的,其他情況的事件調(diào)度狀態(tài)確認(rèn)是可選的。當(dāng)任務(wù)模塊向多個(gè)事件并發(fā)控制與調(diào)度裝置返回一個(gè)確認(rèn)事件處理完成的狀態(tài)確認(rèn)信息后,多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置需要進(jìn)行相應(yīng)的并發(fā)控制和并發(fā)調(diào)度處理,具體處理過程如圖5所示,包括如下步驟步驟5-1、向多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置返回事件處理完成狀態(tài)報(bào)告。
當(dāng)任務(wù)模塊將正在處理的事件列表中的一個(gè)事件處理完成后,便向多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置返回事件處理完成狀態(tài)報(bào)告。
步驟5-2、判斷等待列表中最高優(yōu)先級(jí)事件是否可以并發(fā)處理。
多個(gè)事件并發(fā)控制與并發(fā)調(diào)度裝置收到事件處理完成狀態(tài)報(bào)告后,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊便根據(jù)當(dāng)前的并發(fā)規(guī)則列表,判斷等待列表中優(yōu)先級(jí)最高的事件當(dāng)前是否可以并發(fā)處理,如果可以,則執(zhí)行步驟5-3;否則,執(zhí)行步驟5-4。
步驟5-3、將該等待事件加入處理事件列表。
如果基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊依據(jù)當(dāng)前的并發(fā)規(guī)則列表,判定該等待事件可以并發(fā),即該等待事件當(dāng)前可以被處理,則通知基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊按照其優(yōu)先級(jí)將該等待事件加入當(dāng)前正在處理的事件列表,并根據(jù)該等待事件的事件類型更新當(dāng)前的并發(fā)規(guī)則列表。然后,根據(jù)提交該等待事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理該等待事件的子任務(wù)模塊進(jìn)行相應(yīng)事件處理。
步驟5-4、確定正在處理的事件當(dāng)中與該等待事件存在并發(fā)沖突的所有事件。
如果基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊依據(jù)當(dāng)前的并發(fā)規(guī)則列表,判定該等待事件不可以并發(fā),即依據(jù)當(dāng)前的并發(fā)規(guī)則,存在當(dāng)前正在處理的事件與該等待事件的并發(fā)沖突。于是,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊查看基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊中的當(dāng)前正在處理的事件列表,逐個(gè)找出所有與該等待事件存在并發(fā)沖突的事件,然后,執(zhí)行步驟5-5。
步驟5-5、判斷該等待事件的優(yōu)先級(jí)是否高于存在并發(fā)沖突的所有事件。
多個(gè)事件并發(fā)控制與調(diào)度裝置將該等待事件的優(yōu)先級(jí)和找出的所有與該等待事件存在并發(fā)沖突的事件的優(yōu)先級(jí)進(jìn)行比較,如果該等待事件的優(yōu)先級(jí)較高,高于存在并發(fā)沖突的所有事件的優(yōu)先級(jí)。則執(zhí)行步驟5-7;否則,執(zhí)行步驟5-6。
步驟5-6、將該等待事件保留在等待事件列表。
如果該等待事件的優(yōu)先級(jí)較低,低于存在并發(fā)沖突的所有事件中優(yōu)先級(jí)最高的事件,則基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊通知基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊將該等待事件繼續(xù)停留在等待處理的事件列表。
步驟5-7、將該等待事件加入處理事件列表,將存在并發(fā)沖突的所有事件掛取或放棄。
多個(gè)事件并發(fā)控制與調(diào)度裝置根據(jù)所有當(dāng)前正在處理的存在并發(fā)沖突的所有事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理所有這些事件的子任務(wù)模塊根據(jù)所有這些事件的搶占方式,丟棄或者暫時(shí)掛起所有這些當(dāng)前正在處理的存在并發(fā)沖突的事件。對(duì)于丟棄的事件,基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊將該事件從當(dāng)前正在處理的事件列表中去除。對(duì)于掛起的事件,基于優(yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊將該事件從當(dāng)前正在處理的事件列表中去除后,將其按照事件的優(yōu)先級(jí)加入等待處理的事件列表。同時(shí),負(fù)責(zé)該事件處理的子任務(wù)模塊對(duì)被掛起的事件進(jìn)行保存相關(guān)數(shù)據(jù)等適當(dāng)?shù)奶幚怼?br>
然后?;趦?yōu)先級(jí)的多個(gè)事件并發(fā)調(diào)度模塊按照其優(yōu)先級(jí)將該等待事件加入當(dāng)前正在處理的事件列表,基于并發(fā)規(guī)則的多個(gè)事件并發(fā)控制模塊根據(jù)該等待事件的事件類型更新當(dāng)前的并發(fā)規(guī)則列表。根據(jù)等待事件的任務(wù)標(biāo)識(shí),通知負(fù)責(zé)處理該等待事件的子任務(wù)模塊進(jìn)行相應(yīng)事件處理。
在現(xiàn)有技術(shù)中雖然已經(jīng)有了根據(jù)并發(fā)規(guī)則,對(duì)多任務(wù)軟件系統(tǒng)中可并發(fā)事件進(jìn)行處理的方法,但現(xiàn)有的處理方法沒有采取可并發(fā)事件類型的優(yōu)先級(jí)的概念。因此,本發(fā)明將可并發(fā)事件類型的并發(fā)規(guī)則和優(yōu)先級(jí)相結(jié)合,還提出了一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,該方法包括如下步驟步驟6-1、設(shè)置多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和優(yōu)先級(jí)信息。
本發(fā)明所述方法首先需要在多任務(wù)軟件系統(tǒng)中,設(shè)置所有可并發(fā)事件類型的并發(fā)規(guī)則和優(yōu)先級(jí)信息。所有可并發(fā)事件類型的并發(fā)規(guī)則可以通過并發(fā)矩陣來表示。
該方法還可以根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表。
步驟6-2、根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,判斷當(dāng)前需要被處理的可并發(fā)事件能不能并發(fā)。
在多任務(wù)軟件系統(tǒng)中的可并發(fā)事件需要被處理時(shí),根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,判斷當(dāng)前需要被處理的可并發(fā)事件能不能并發(fā)。
如果已經(jīng)生成了多任務(wù)軟件系統(tǒng)當(dāng)前的并發(fā)規(guī)則列表,則根據(jù)該并發(fā)規(guī)則列表判斷當(dāng)前需要被處理的可并發(fā)事件能不能并發(fā)。
如果判斷當(dāng)前需要被處理的可并發(fā)事件能夠并發(fā),則執(zhí)行步驟6-3;否則,執(zhí)行步驟6-4。
步驟6-3、確定當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理。
如果根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則或當(dāng)前的并發(fā)規(guī)則列表,判定該事件可以并發(fā),即該事件當(dāng)前可以被處理,則將該當(dāng)前需要被處理的可并發(fā)事件按照其優(yōu)先級(jí)加入正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理。并根據(jù)所有正在處理的事件類型的并發(fā)規(guī)則更新當(dāng)前的并發(fā)規(guī)則列表。
在多任務(wù)軟件系統(tǒng)中一個(gè)正在處理的事件處理完畢后,則處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件成為當(dāng)前需要被處理的可并發(fā)事件。
步驟6-4、根據(jù)所述需要被處理的可并發(fā)事件的優(yōu)先級(jí)和存在并發(fā)沖突的所有事件的優(yōu)先級(jí)之間的關(guān)系,確定該需要被處理的可并發(fā)事件能不能并發(fā)。
如果根據(jù)多任務(wù)軟件系統(tǒng)中所有當(dāng)前正在處理的事件類型的并發(fā)規(guī)則或當(dāng)前的并發(fā)規(guī)則列表,判定該事件不能并發(fā),則在多任務(wù)軟件系統(tǒng)當(dāng)前正在處理的事件中找出所有與該事件存在并發(fā)沖突的事件,并判斷查找出來的事件和該事件的優(yōu)先級(jí)的關(guān)系。
如果該需要被處理的可并發(fā)事件的優(yōu)先級(jí)大于所有查找到的事件的優(yōu)先級(jí),則執(zhí)行步驟6-5;否則,執(zhí)行步驟6-6。
步驟6-5、確定需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理。
將該當(dāng)前需要被處理的可并發(fā)事件按照其優(yōu)先級(jí)加入正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理。將查找到的事件的狀態(tài)更新為等待處理狀態(tài)并將該事件掛起,或者,將查找到的事件直接丟棄。
根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則更新當(dāng)前的并發(fā)規(guī)則列表。
步驟6-6、確定該當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為等待處理狀態(tài),將該事件掛起。
確定該當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為等待處理狀態(tài),將該事件按照其優(yōu)先級(jí)加入等待處理狀態(tài),將該事件掛起。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,包括任務(wù)模塊用于在多任務(wù)軟件系統(tǒng)中的可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并根據(jù)并發(fā)處理模塊返回的該事件的并發(fā)控制信息,對(duì)該事件進(jìn)行相應(yīng)的處理;并發(fā)處理模塊用于維護(hù)多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和任務(wù)模塊提交過來的事件的狀態(tài)信息,根據(jù)該并發(fā)規(guī)則和狀態(tài)信息,生成接收到的提交事件的并發(fā)控制信息,并將該并發(fā)控制信息傳遞給任務(wù)模塊。
2.根據(jù)權(quán)利要求1所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的任務(wù)模塊具體包括事件提交模塊用于當(dāng)可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并接收并發(fā)處理模塊返回的該事件的并發(fā)控制信息,將該并發(fā)控制信息傳遞給事件處理模塊,將事件處理模塊返回的事件處理狀態(tài)信息傳遞給并發(fā)處理模塊;事件處理模塊用于根據(jù)接收到的并發(fā)控制信息,對(duì)相應(yīng)的可并發(fā)事件進(jìn)行相應(yīng)的事務(wù)處理或者將該可并發(fā)事件掛起或者將該可并發(fā)事件丟棄,并返回事件處理狀態(tài)信息給事件提交模塊。
3.根據(jù)權(quán)利要求2所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的任務(wù)模塊還包括事件標(biāo)識(shí)模塊用于當(dāng)可并發(fā)事件需要被處理時(shí),生成在多任務(wù)軟件系統(tǒng)的整個(gè)運(yùn)行期內(nèi)唯一標(biāo)識(shí)該事件的事件標(biāo)識(shí),并將該事件標(biāo)識(shí)傳遞給事件處理模塊和事件提交模塊。
4.根據(jù)權(quán)利要求1、2或3所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)處理模塊具體包括并發(fā)規(guī)則模塊用于定義和維護(hù)多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則,并通過接口將該并發(fā)規(guī)則傳遞給并發(fā)控制和調(diào)度模塊;并發(fā)控制和調(diào)度模塊用于維護(hù)所有接收到的提交事件的狀態(tài)信息,并根據(jù)該狀態(tài)信息和接收到的并發(fā)規(guī)則,生成接收到的提交事件的并發(fā)控制信息,并將該并發(fā)控制信息返回給任務(wù)模塊。
5.根據(jù)權(quán)利要求4所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)規(guī)則模塊包括并發(fā)規(guī)則矩陣模塊用于使用矩陣來集中表示多任務(wù)軟件系統(tǒng)中所有可并發(fā)事件類型的并發(fā)規(guī)則。
6.根據(jù)權(quán)利要求5所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)控制和調(diào)度模塊具體包括并發(fā)調(diào)度模塊用于維護(hù)所有正在處理的和所有處于等待處理狀態(tài)的事件的狀態(tài)信息,其中包括事件的類型和優(yōu)先級(jí)信息,并將該事件狀態(tài)信息傳遞給并發(fā)控制模塊;并發(fā)控制模塊用于根據(jù)接收到的并發(fā)規(guī)則和并發(fā)調(diào)度模塊傳遞過來的事件狀態(tài)信息,確定接收到的提交事件的狀態(tài)信息,并生成相應(yīng)的并發(fā)控制信息,將該并發(fā)控制信息傳遞給任務(wù)模塊;事件處理狀態(tài)信息接收模塊用于接收任務(wù)模塊返回的事件處理狀態(tài)信息,當(dāng)接收到事件處理完畢的狀態(tài)信息后,則通知并發(fā)調(diào)度模塊將處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件提交給并發(fā)控制模塊。
7.根據(jù)權(quán)利要求6所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)調(diào)度模塊包括當(dāng)前正在處理的事件列表用于按照優(yōu)先級(jí)從高到低排列所有正在處理的事件;等待處理的事件列表用于按照優(yōu)先級(jí)從高到低排列所有正處于等待處理狀態(tài)的事件。
8.根據(jù)權(quán)利要求7所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)控制模塊具體包括并發(fā)判斷模塊用于根據(jù)接收到的并發(fā)規(guī)則,判斷接收到的提交事件當(dāng)前能不能并發(fā),如果能并發(fā),則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,生成該事件的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊;如果不能并發(fā),則將該事件提交給優(yōu)先級(jí)判斷模塊;優(yōu)先級(jí)判斷模塊用于在當(dāng)前正在處理的事件列表中找出所有與提交事件存在并發(fā)沖突的事件,然后判斷提交事件的優(yōu)先級(jí)是否大于所有查找出來的事件的優(yōu)先級(jí),如果是,則通知并發(fā)調(diào)度模塊將該事件加入當(dāng)前正在處理的事件列表,將所有查找出來的事件加入等待處理的事件列表或丟棄;否則,將該事件加入等待處理的事件列表,然后生成相應(yīng)的并發(fā)控制信息,并將該信息傳遞給任務(wù)模塊。
9.根據(jù)權(quán)利要求8所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置,其特征在于,所述的并發(fā)控制模塊包括當(dāng)前的并發(fā)規(guī)則生成模塊用于根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表,并把該表傳遞給并發(fā)判斷模塊。
10.一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,其特征在于,包括A、設(shè)置多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和優(yōu)先級(jí)信息;B、根據(jù)所述設(shè)置的信息,對(duì)多任務(wù)軟件系統(tǒng)中需要被處理的可并發(fā)事件進(jìn)行相應(yīng)的處理。
11.根據(jù)權(quán)利要求10所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,其特征在于,所述的步驟A還包括根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,通過進(jìn)行與運(yùn)算得到當(dāng)前的并發(fā)規(guī)則列表。
12.根據(jù)權(quán)利要求10或11所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,其特征在于,所述的步驟B具體包括B1、根據(jù)多任務(wù)軟件系統(tǒng)中所有正在處理的事件類型的并發(fā)規(guī)則,判斷當(dāng)前需要被處理的可并發(fā)事件能不能并發(fā),如果能,則執(zhí)行步驟B2;否則,執(zhí)行步驟B3;B2、確定當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理;B3、根據(jù)所述需要被處理的可并發(fā)事件的優(yōu)先級(jí)和存在并發(fā)沖突的所有事件的優(yōu)先級(jí)之間的關(guān)系,確定該需要被處理的可并發(fā)事件能不能并發(fā)。
13.根據(jù)權(quán)利要求12所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,其特征在于,所述的步驟B3具體包括B31、在當(dāng)前正在處理的事件中找出所有與該需要被處理的可并發(fā)事件存在并發(fā)沖突的事件,如果該需要被處理的可并發(fā)事件的優(yōu)先級(jí)大于所有查找到的事件的優(yōu)先級(jí),則執(zhí)行步驟B32;否則,執(zhí)行步驟B33;B32、確定需要被處理的可并發(fā)事件的狀態(tài)為正在處理狀態(tài),對(duì)該事件進(jìn)行相應(yīng)的事務(wù)處理,將查找到的事件的狀態(tài)更新為等待處理狀態(tài)并將該事件掛起,或者,將查找到的事件直接丟棄;B33、確定該當(dāng)前需要被處理的可并發(fā)事件的狀態(tài)為等待處理狀態(tài),將該事件掛起。
14.根據(jù)權(quán)利要求13所述多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理方法,其特征在于,所述的步驟B還包括在多任務(wù)軟件系統(tǒng)中一個(gè)正在處理的事件處理完畢后,則處于等待處理狀態(tài)的事件中優(yōu)先級(jí)最高的事件成為當(dāng)前需要被處理的可并發(fā)事件。
全文摘要
本發(fā)明涉及一種多任務(wù)軟件系統(tǒng)中并發(fā)事件的處理裝置和方法。所述的裝置主要包括任務(wù)模塊用于在多任務(wù)軟件系統(tǒng)中的可并發(fā)事件需要被處理時(shí),向并發(fā)處理模塊提交該事件,并根據(jù)并發(fā)處理模塊返回的該事件的并發(fā)控制信息,對(duì)該事件進(jìn)行相應(yīng)的處理;并發(fā)處理模塊用于維護(hù)多任務(wù)軟件系統(tǒng)中可并發(fā)事件類型的并發(fā)規(guī)則和任務(wù)模塊提交過來的事件的狀態(tài)信息,根據(jù)該并發(fā)規(guī)則和狀態(tài)信息,生成接收到的提交事件的并發(fā)控制信息,并將該并發(fā)控制信息傳遞給任務(wù)模塊。利用本發(fā)明所述裝置可以使得多任務(wù)軟件系統(tǒng)中并發(fā)事件處理的設(shè)計(jì)以及實(shí)現(xiàn)更加簡(jiǎn)單,使得多任務(wù)軟件系統(tǒng)的維護(hù)工作更加方便。
文檔編號(hào)G06F9/46GK1889045SQ20051008016
公開日2007年1月3日 申請(qǐng)日期2005年6月30日 優(yōu)先權(quán)日2005年6月30日
發(fā)明者魏東 申請(qǐng)人:華為技術(shù)有限公司