本發(fā)明涉及軟件開發(fā)技術(shù)領(lǐng)域,尤其涉及一種任務(wù)監(jiān)聽方法和裝置。
背景技術(shù):
一些應(yīng)用場景下,例如,在用戶點(diǎn)擊電子設(shè)備中的某個(gè)應(yīng)用程序,該應(yīng)用程序會(huì)從后臺(tái)服務(wù)器讀取需要加載的數(shù)據(jù),當(dāng)該加載數(shù)據(jù)的過程觸發(fā)多個(gè)異步并發(fā)任務(wù)時(shí),可以對多個(gè)異步并發(fā)任務(wù)進(jìn)行監(jiān)聽。
相關(guān)技術(shù)中,通常在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼中添加標(biāo)志位,例如,在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼中添加布爾型的標(biāo)志位來標(biāo)記是否所有任務(wù)已經(jīng)執(zhí)行完畢,或者,使用rxjava實(shí)現(xiàn)合并多個(gè)請求為鏈?zhǔn)綀?zhí)行。
第一種方式下,在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的使用過程中易出錯(cuò),且代碼冗余,無法復(fù)用。第一這種方式下,需要集成rxjava,且耗費(fèi)較高的學(xué)習(xí)成本。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明旨在至少在一定程度上解決相關(guān)技術(shù)中的技術(shù)問題之一。
為此,本發(fā)明的一個(gè)目的在于提出一種任務(wù)監(jiān)聽方法,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
本發(fā)明的另一個(gè)目的在于提出一種任務(wù)監(jiān)聽裝置。
為達(dá)到上述目的,本發(fā)明第一方面實(shí)施例提出的任務(wù)監(jiān)聽方法,包括:監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在所述任務(wù)產(chǎn)生所述預(yù)設(shè)事件時(shí),獲取所述任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)所述下標(biāo)值對所述位進(jìn)行置位處理,并對所述位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取所述任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)所述下標(biāo)值對所述位進(jìn)行置位處理,包括:
獲取所述位對應(yīng)的鍵值;
根據(jù)所述鍵值獲取所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值;
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將所述預(yù)設(shè)運(yùn)算后的預(yù)定義變量與所述位進(jìn)行位或/位與運(yùn)算,以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)設(shè)事件包括:所述任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第一預(yù)設(shè)事件時(shí),所述基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將所述預(yù)設(shè)運(yùn)算后的預(yù)定義變量與所述位進(jìn)行位或/位與運(yùn)算,包括:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,將左移運(yùn)算后的預(yù)定義變量作為第一變量;
通過將所述第一變量與所述位進(jìn)行位或運(yùn)算以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)設(shè)事件包括:所述任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將所述預(yù)設(shè)運(yùn)算后的預(yù)定義變量與所述位進(jìn)行位或/位與運(yùn)算,包括:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,并對所述左移運(yùn)算后的預(yù)定義變量進(jìn)行取反運(yùn)算,將所述取反運(yùn)算后的預(yù)定義變量作為第二變量;
通過將所述第二變量與所述位進(jìn)行位與運(yùn)算以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作,還包括:
判斷所述任務(wù)狀態(tài)寄存器的位是否均為零;
在所述任務(wù)狀態(tài)寄存器的位均為零時(shí),觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
在本發(fā)明的一個(gè)實(shí)施例中,所述根據(jù)所述鍵值獲取所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,包括:
從預(yù)設(shè)注冊映射表中讀取與所述鍵值匹配的下標(biāo)值,并將所述坐標(biāo)值作為所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值。
在本發(fā)明的一個(gè)實(shí)施例中,在所述監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件之前,還包括:
對注冊狀態(tài)寄存器逐位進(jìn)行檢測,獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值;
根據(jù)所述下標(biāo)值和所述對應(yīng)的鍵值生成所述預(yù)設(shè)注冊映射表。
本發(fā)明第一方面實(shí)施例提出的任務(wù)監(jiān)聽方法,通過監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,由于通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
為達(dá)到上述目的,本發(fā)明第二方面實(shí)施例提出的任務(wù)監(jiān)聽裝置,包括:監(jiān)聽模塊,用于監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;獲取模塊,用于在所述任務(wù)產(chǎn)生所述預(yù)設(shè)事件時(shí),獲取所述任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)所述下標(biāo)值對所述位進(jìn)行置位處理;調(diào)用模塊,用于觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
在本發(fā)明的一個(gè)實(shí)施例中,所述獲取模塊,包括:
第一獲取子模塊,用于獲取所述位對應(yīng)的鍵值;
第二獲取子模塊,用于根據(jù)所述鍵值獲取所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值;
置位子模塊,用于基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將所述預(yù)設(shè)運(yùn)算后的預(yù)定義變量與所述位進(jìn)行位或/位與運(yùn)算,以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)設(shè)事件包括:所述任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第一預(yù)設(shè)事件時(shí),所述置位子模塊具體用于:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,將左移運(yùn)算后的預(yù)定義變量作為第一變量;
通過將所述第一變量與所述位進(jìn)行位或運(yùn)算以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,所述預(yù)設(shè)事件包括:所述任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述置位子模塊具體用于:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,并對所述左移運(yùn)算后的預(yù)定義變量進(jìn)行取反運(yùn)算,將所述取反運(yùn)算后的預(yù)定義變量作為第二變量;
通過將所述第二變量與所述位進(jìn)行位與運(yùn)算以對所述位進(jìn)行置位處理。
在本發(fā)明的一個(gè)實(shí)施例中,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述調(diào)用模塊包括:
判斷子模塊,用于判斷所述任務(wù)狀態(tài)寄存器的位是否均為零;
調(diào)用子模塊,用于在所述任務(wù)狀態(tài)寄存器的位均為零時(shí),觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
在本發(fā)明的一個(gè)實(shí)施例中,所述第二獲取子模塊具體用于:
從預(yù)設(shè)注冊映射表中讀取與所述鍵值匹配的下標(biāo)值,并將所述坐標(biāo)值作為所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值。
在本發(fā)明的一個(gè)實(shí)施例中,還包括:
檢測模塊,用于對注冊狀態(tài)寄存器逐位進(jìn)行檢測,獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值;
生成模塊,用于根據(jù)所述下標(biāo)值和所述對應(yīng)的鍵值生成所述預(yù)設(shè)注冊映射表。
本發(fā)明第二方面實(shí)施例提出的任務(wù)監(jiān)聽裝置,通過監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,由于通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
本發(fā)明附加的方面和優(yōu)點(diǎn)將在下面的描述中部分給出,部分將從下面的描述中變得明顯,或通過本發(fā)明的實(shí)踐了解到。
附圖說明
本發(fā)明上述的和/或附加的方面和優(yōu)點(diǎn)從下面結(jié)合附圖對實(shí)施例的描述中將變得明顯和容易理解,其中:
圖1是本發(fā)明一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖;
圖2是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖;
圖3是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖;
圖4是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖;
圖5是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖;
圖6是本發(fā)明一實(shí)施例提出的任務(wù)監(jiān)聽裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽裝置的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面詳細(xì)描述本發(fā)明的實(shí)施例,所述實(shí)施例的示例在附圖中示出,其中自始至終相同或類似的標(biāo)號表示相同或類似的元件或具有相同或類似功能的元件。下面通過參考附圖描述的實(shí)施例是示例性的,僅用于解釋本發(fā)明,而不能理解為對本發(fā)明的限制。相反,本發(fā)明的實(shí)施例包括落入所附加權(quán)利要求書的精神和內(nèi)涵范圍內(nèi)的所有變化、修改和等同物。
圖1是本發(fā)明一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖。
本發(fā)明的實(shí)施例可以例如應(yīng)用在電子設(shè)備的前端界面向后臺(tái)服務(wù)器發(fā)送加載數(shù)據(jù)的請求,根據(jù)該請求觸發(fā)加載任務(wù)的過程中,對此不作限制。
其中,電子設(shè)備例如為個(gè)人電腦(personalcomputer,pc),云端設(shè)備或者移動(dòng)設(shè)備,移動(dòng)設(shè)備例如智能手機(jī),或者平板電腦等。
進(jìn)一步地,該任務(wù)監(jiān)聽方法可以設(shè)置在電子設(shè)備中,也可以設(shè)置在后臺(tái)服務(wù)器中,對此不作限制。
例如,在用戶點(diǎn)擊電子設(shè)備中的某個(gè)應(yīng)用程序,該應(yīng)用程序會(huì)從后臺(tái)服務(wù)器讀取需要加載的數(shù)據(jù),當(dāng)該加載數(shù)據(jù)的過程觸發(fā)多個(gè)異步并發(fā)任務(wù)時(shí),可以對多個(gè)異步并發(fā)任務(wù)進(jìn)行監(jiān)聽,對此不作限制。
參見圖1,該方法包括:
s11:監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件。
在本發(fā)明的實(shí)施例中,該任務(wù)可以是由電子設(shè)備中的應(yīng)用程序從后臺(tái)服務(wù)器讀取需要加載的數(shù)據(jù)時(shí)所觸發(fā)的,對此不做限制。
其中,所觸發(fā)的任務(wù)可以為一個(gè)或者多個(gè)。
可選地,預(yù)設(shè)事件可以例如為任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件,或者,任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件,也可以為其它該任務(wù)執(zhí)行過程中的事件(例如,任務(wù)中斷執(zhí)行),對此不作限制。
s12:在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理。
相關(guān)技術(shù)中,通常在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼中添加標(biāo)志位,例如,在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼中添加布爾型的標(biāo)志位來標(biāo)記是否所有任務(wù)已經(jīng)執(zhí)行完畢,這種方式下,在實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的使用過程中易出錯(cuò),且代碼冗余,無法復(fù)用。或者,使用rxjava實(shí)現(xiàn)合并多個(gè)請求為鏈?zhǔn)綀?zhí)行,這種方式下,需要集成rxjava,且耗費(fèi)較高的學(xué)習(xí)成本。
而在本發(fā)明的實(shí)施例中,可以基于計(jì)算機(jī)編程語言(例如,java,c++等)模擬任務(wù)狀態(tài)寄存器和注冊狀態(tài)寄存器的處理邏輯,通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
在本發(fā)明的實(shí)施例中,任務(wù)狀態(tài)寄存器的位,可以與注冊狀態(tài)寄存器的位一一對應(yīng),例如,注冊狀態(tài)寄存器的第i位為1,表明任務(wù)狀態(tài)寄存器的第i位正在被一個(gè)任務(wù)占用,此時(shí),如果任務(wù)狀態(tài)寄存器的第i位為0,表明該任務(wù)沒有處于運(yùn)行中狀態(tài),如果第i位為1,則表明該任務(wù)在運(yùn)行中,或者,任務(wù)狀態(tài)寄存器的位,可以與注冊狀態(tài)寄存器的位也可以為其它對應(yīng)關(guān)系,對此不作限制。
在本發(fā)明的實(shí)施例中,可以獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理,例如,可以通過分析觸發(fā)任務(wù)的處理邏輯,來解析得到任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,或者,也可以通過分析觸發(fā)任務(wù)的處理邏輯,來解析得到任務(wù)所占用任務(wù)狀態(tài)寄存器的位的鍵值,通過該鍵值獲取對應(yīng)的下標(biāo)值,對此不作限制。
s13:觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作。
在本發(fā)明的實(shí)施例中,該回調(diào)接口的處理邏輯可以例如用于觸發(fā)加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,對應(yīng)的界面操作例如,加載任務(wù)的前端界面彈出加載動(dòng)畫,或者,隱藏加載動(dòng)畫,對此不作限制。
進(jìn)一步地,該回調(diào)接口的處理邏輯可以由軟件開發(fā)人員基于計(jì)算機(jī)編程語言(例如,java,c++等)實(shí)現(xiàn),并預(yù)先編寫調(diào)用該回調(diào)接口的應(yīng)用程序編程接口(applicationprogramminginterface,api),以及,將其處理邏輯與任務(wù)狀態(tài)寄存器和注冊狀態(tài)寄存器的處理邏輯進(jìn)行集成,以實(shí)現(xiàn)在對任務(wù)所占用任務(wù)狀態(tài)寄存器的位進(jìn)行置位處理之后,通過調(diào)用該回調(diào)接口的api,使得加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,對此不作限制。
在本發(fā)明的實(shí)施例中,由于可以采用不同的計(jì)算機(jī)編程語言模擬任務(wù)狀態(tài)寄存器和注冊狀態(tài)寄存器的處理邏輯,以及回調(diào)接口的處理邏輯,處理邏輯簡潔清晰,因此,可以實(shí)現(xiàn)代碼復(fù)用,即將該任務(wù)監(jiān)聽方法集成在不同的應(yīng)用平臺(tái)中,程序可移植性高,應(yīng)用范圍廣泛,學(xué)習(xí)成本低。
本實(shí)施例中,通過監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,由于通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
圖2是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖。
參見圖2,該方法包括:
s21:對注冊狀態(tài)寄存器逐位進(jìn)行檢測,獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值。
在本發(fā)明的實(shí)施例中,由于基于計(jì)算機(jī)編程語言(例如,java,c++等)模擬任務(wù)狀態(tài)寄存器和注冊狀態(tài)寄存器的處理邏輯,其中,可以通過注冊狀態(tài)寄存器的位來標(biāo)記是否觸發(fā)任務(wù),能夠有效提升任務(wù)的監(jiān)控效果。
進(jìn)一步地,在對任務(wù)進(jìn)行監(jiān)聽之前,可以對注冊狀態(tài)寄存器逐位進(jìn)行檢測,獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值,其中,鍵值可以例如為任務(wù)對應(yīng)的哈希碼,對此不作限制。由于根據(jù)未被占用的位來標(biāo)記是否觸發(fā)任務(wù),能夠有效保證任務(wù)監(jiān)控的高效性和精準(zhǔn)性,避免宕機(jī)。
s22:根據(jù)下標(biāo)值和對應(yīng)的鍵值生成預(yù)設(shè)注冊映射表。
例如,在獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值之后,可以將每個(gè)位的下標(biāo)值和對應(yīng)的鍵值一一對應(yīng),產(chǎn)生每個(gè)位的對應(yīng)關(guān)系,根據(jù)對應(yīng)后的多組對應(yīng)關(guān)系生成預(yù)設(shè)注冊映射表。
通過根據(jù)下標(biāo)值和對應(yīng)的鍵值生成預(yù)設(shè)注冊映射表,能夠?qū)崿F(xiàn)根據(jù)注冊狀態(tài)寄存器的位的鍵值進(jìn)行索引,保證監(jiān)控高效性。
s23:監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件。
s23可以參見上述實(shí)施例,在此不作贅述。
s24:獲取位對應(yīng)的鍵值。
s25:根據(jù)鍵值獲取所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值。
可選地,可以從預(yù)設(shè)注冊映射表中讀取與鍵值匹配的下標(biāo)值,并將坐標(biāo)值作為所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,進(jìn)一步保證監(jiān)控高效性。
s26:基于下標(biāo)值對預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將預(yù)設(shè)運(yùn)算后的預(yù)定義變量與位進(jìn)行位或/位與運(yùn)算,以對位進(jìn)行置位處理。
在本發(fā)明的實(shí)施例中,預(yù)定義變量可以例如為二進(jìn)制數(shù)1,對此不作限制。
進(jìn)一步地,預(yù)設(shè)運(yùn)算可以例如為對二進(jìn)制數(shù)1進(jìn)行左移運(yùn)算,例如,對該二進(jìn)制數(shù)1左移3位,可以得到1000,對此不作限制。
例如,二進(jìn)制數(shù)1在內(nèi)存中的表現(xiàn)值為00000000000000000000000000000001,對其進(jìn)行左移3位的預(yù)設(shè)運(yùn)算,其1變?yōu)?0000000000000000000000000001000。
進(jìn)一步地,在本發(fā)明的實(shí)施例中,可以通過將預(yù)設(shè)運(yùn)算后的預(yù)定義變量與位進(jìn)行位或/位與運(yùn)算,以對位進(jìn)行置位處理,或者,也可以直接通過預(yù)設(shè)的置位規(guī)則,對位進(jìn)行置位處理,對此不作限制。
通過基于下標(biāo)值對預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將預(yù)設(shè)運(yùn)算后的預(yù)定義變量與位進(jìn)行位或/位與運(yùn)算,以對位進(jìn)行置位處理,處理邏輯簡潔清晰,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
s27:觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作。
s27可以參見上述實(shí)施例,在此不作贅述。
本實(shí)施例中,通過注冊狀態(tài)寄存器的位來標(biāo)記是否觸發(fā)任務(wù),能夠有效提升任務(wù)的監(jiān)控效果。由于根據(jù)未被占用的位來標(biāo)記是否觸發(fā)任務(wù),能夠有效保證任務(wù)監(jiān)控的高效性和精準(zhǔn)性,避免宕機(jī)。通過根據(jù)下標(biāo)值和對應(yīng)的鍵值生成預(yù)設(shè)注冊映射表,能夠?qū)崿F(xiàn)根據(jù)注冊狀態(tài)寄存器的位的鍵值進(jìn)行索引,保證監(jiān)控高效性。通過基于下標(biāo)值對預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將預(yù)設(shè)運(yùn)算后的預(yù)定義變量與位進(jìn)行位或/位與運(yùn)算,以對位進(jìn)行置位處理,處理邏輯簡潔清晰,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。通過監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位,并對位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,由于通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用。
圖3是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖。
本實(shí)施例以預(yù)設(shè)事件為任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件示例。
其中,在預(yù)設(shè)事件為第一預(yù)設(shè)事件時(shí),圖2所示實(shí)施例中s26包括:
s31:基于下標(biāo)值對預(yù)定義變量進(jìn)行左移運(yùn)算,將左移運(yùn)算后的預(yù)定義變量作為第一變量。
s32:通過將第一變量與位進(jìn)行位或運(yùn)算以對位進(jìn)行置位處理。
舉例而言,通過任務(wù)所占用任務(wù)狀態(tài)寄存器的位的鍵值,在預(yù)設(shè)注冊映射表中索引到該位的下標(biāo)值i,且,預(yù)定義變量為1,將1左移i位,并將左移i位的預(yù)定義變量作為第一變量,將第一變量與位進(jìn)行位或運(yùn)算,即,將任務(wù)狀態(tài)寄存器中該位置1。
本實(shí)施例中,通過基于下標(biāo)值對預(yù)定義變量進(jìn)行左移運(yùn)算,將左移運(yùn)算后的預(yù)定義變量作為第一變量,并通過將第一變量與位進(jìn)行位或運(yùn)算以對位進(jìn)行置位處理,通過對任務(wù)狀態(tài)寄存器的位置位來標(biāo)記任務(wù)產(chǎn)生任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件,能夠?qū)崿F(xiàn)對任務(wù)開始執(zhí)行的狀態(tài)進(jìn)行監(jiān)聽,保證監(jiān)聽準(zhǔn)確度。
圖4是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖。
本實(shí)施例以預(yù)設(shè)事件為任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件示例。
其中,在預(yù)設(shè)事件為第二預(yù)設(shè)事件時(shí),圖2所示實(shí)施例中s26包括:
s41:基于下標(biāo)值對預(yù)定義變量進(jìn)行左移運(yùn)算,并對左移運(yùn)算后的預(yù)定義變量進(jìn)行取反運(yùn)算,將取反運(yùn)算后的預(yù)定義變量作為第二變量。
s42:通過將第二變量與位進(jìn)行位與運(yùn)算以對位進(jìn)行置位處理。
舉例而言,通過任務(wù)所占用任務(wù)狀態(tài)寄存器的位的鍵值,在預(yù)設(shè)注冊映射表中索引到該位的下標(biāo)值i,且,預(yù)定義變量為1,將1左移i位,并對左移i位的預(yù)定義變量進(jìn)行取反運(yùn)算,將取反運(yùn)算后的預(yù)定義變量作為第二變量,以及將第二變量與位進(jìn)行位與運(yùn)算,即,將任務(wù)狀態(tài)寄存器中該位置0。
本實(shí)施例中,通過基于下標(biāo)值對預(yù)定義變量進(jìn)行左移運(yùn)算,并對左移運(yùn)算后的預(yù)定義變量進(jìn)行取反運(yùn)算,將取反運(yùn)算后的預(yù)定義變量作為第二變量,并通過將第二變量與位進(jìn)行位與運(yùn)算以對位進(jìn)行置位處理,通過對任務(wù)狀態(tài)寄存器的位置位來標(biāo)記任務(wù)產(chǎn)生任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件,能夠?qū)崿F(xiàn)對任務(wù)結(jié)束執(zhí)行的狀態(tài)進(jìn)行監(jiān)聽,保證監(jiān)聽準(zhǔn)確度。
圖5是本發(fā)明另一實(shí)施例提出的任務(wù)監(jiān)聽方法的流程示意圖。
其中,在預(yù)設(shè)事件為第二預(yù)設(shè)事件時(shí),圖1所示實(shí)施例中s13,或者,圖2所示實(shí)施例中s27,還可以包括:
s51:判斷任務(wù)狀態(tài)寄存器的位是否均為零,若是,則執(zhí)行s52,否則執(zhí)行s53。
可以理解的是,在本發(fā)明的實(shí)施例中,通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,在觸發(fā)多個(gè)異步并發(fā)任務(wù)時(shí),可以對多個(gè)異步并發(fā)任務(wù)進(jìn)行監(jiān)聽,即,通過任務(wù)狀態(tài)寄存器的不同的位來標(biāo)記不同的任務(wù)是否產(chǎn)生預(yù)設(shè)事件的情況,對此不作限制。
s52:觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作。
s53:持續(xù)監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件。
本實(shí)施例中,通過判斷任務(wù)狀態(tài)寄存器的位是否均為零,在任務(wù)狀態(tài)寄存器的位均為零時(shí),觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,在任務(wù)狀態(tài)寄存器的位并不均為零時(shí),持續(xù)監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠有效降低任務(wù)監(jiān)聽的失誤率,提升監(jiān)聽效果。
圖6是本發(fā)明一實(shí)施例提出的任務(wù)監(jiān)聽裝置的結(jié)構(gòu)示意圖。
參見圖6,該裝置60包括:監(jiān)聽模塊601、獲取模塊602,以及調(diào)用模塊603。其中,
監(jiān)聽模塊601,用于監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件。
獲取模塊602,用于在所述任務(wù)產(chǎn)生所述預(yù)設(shè)事件時(shí),獲取所述任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)所述下標(biāo)值對所述位進(jìn)行置位處理。
可選地,一些實(shí)施例中,參見圖7,所述獲取模塊602,包括:
第一獲取子模塊6021,用于獲取所述位對應(yīng)的鍵值。
第二獲取子模塊6022,用于根據(jù)所述鍵值獲取所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值。
可選地,所述第二獲取子模塊6022具體用于:
從預(yù)設(shè)注冊映射表中讀取與所述鍵值匹配的下標(biāo)值,并將所述坐標(biāo)值作為所述所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值。
置位子模塊6023,用于基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行預(yù)設(shè)運(yùn)算,并通過將所述預(yù)設(shè)運(yùn)算后的預(yù)定義變量與所述位進(jìn)行位或/位與運(yùn)算,以對所述位進(jìn)行置位處理。
可選地,所述預(yù)設(shè)事件包括:所述任務(wù)開始執(zhí)行的第一預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第一預(yù)設(shè)事件時(shí),所述置位子模塊6023具體用于:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,將左移運(yùn)算后的預(yù)定義變量作為第一變量;通過將所述第一變量與所述位進(jìn)行位或運(yùn)算以對所述位進(jìn)行置位處理。
可選地,所述預(yù)設(shè)事件包括:所述任務(wù)結(jié)束執(zhí)行的第二預(yù)設(shè)事件,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述置位子模塊6023具體用于:
基于所述下標(biāo)值對所述預(yù)定義變量進(jìn)行左移運(yùn)算,并對所述左移運(yùn)算后的預(yù)定義變量進(jìn)行取反運(yùn)算,將所述取反運(yùn)算后的預(yù)定義變量作為第二變量;通過將所述第二變量與所述位進(jìn)行位與運(yùn)算以對所述位進(jìn)行置位處理。
調(diào)用模塊603,用于觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
可選地,一些實(shí)施例中,參見圖7,在所述預(yù)設(shè)事件為所述第二預(yù)設(shè)事件時(shí),所述調(diào)用模塊603包括:
判斷子模塊6031,用于判斷所述任務(wù)狀態(tài)寄存器的位是否均為零。
調(diào)用子模塊6032,用于在所述任務(wù)狀態(tài)寄存器的位均為零時(shí),觸發(fā)調(diào)用回調(diào)接口,以使加載所述任務(wù)的前端界面進(jìn)行與所述預(yù)設(shè)事件對應(yīng)的界面操作。
可選地,一些實(shí)施例中,參見圖7,該裝置60包括:
檢測模塊604,用于對注冊狀態(tài)寄存器逐位進(jìn)行檢測,獲取每個(gè)未被占用的位的下標(biāo)值和對應(yīng)的鍵值。
生成模塊605,用于根據(jù)所述下標(biāo)值和所述對應(yīng)的鍵值生成所述預(yù)設(shè)注冊映射表。
需要說明的是,前述圖1-圖5實(shí)施例中對任務(wù)監(jiān)聽方法實(shí)施例的解釋說明也適用于該實(shí)施例的任務(wù)監(jiān)聽裝置60,其實(shí)現(xiàn)原理類似,此處不再贅述。
本實(shí)施例中,通過監(jiān)聽任務(wù)是否產(chǎn)生預(yù)設(shè)事件;在任務(wù)產(chǎn)生預(yù)設(shè)事件時(shí),獲取任務(wù)所占用任務(wù)狀態(tài)寄存器的位的下標(biāo)值,并根據(jù)下標(biāo)值對位進(jìn)行置位處理;觸發(fā)調(diào)用回調(diào)接口,以使加載任務(wù)的前端界面進(jìn)行與預(yù)設(shè)事件對應(yīng)的界面操作,由于通過采用任務(wù)狀態(tài)寄存器的位來標(biāo)記任務(wù)是否產(chǎn)生預(yù)設(shè)事件,能夠減少實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的冗余,實(shí)現(xiàn)代碼復(fù)用,有效降低實(shí)現(xiàn)任務(wù)監(jiān)聽代碼的學(xué)習(xí)成本。
需要說明的是,在本發(fā)明的描述中,術(shù)語“第一”、“第二”等僅用于描述目的,而不能理解為指示或暗示相對重要性。此外,在本發(fā)明的描述中,除非另有說明,“多個(gè)”的含義是兩個(gè)或兩個(gè)以上。
流程圖中或在此以其他方式描述的任何過程或方法描述可以被理解為,表示包括一個(gè)或更多個(gè)用于實(shí)現(xiàn)特定邏輯功能或過程的步驟的可執(zhí)行指令的代碼的模塊、片段或部分,并且本發(fā)明的優(yōu)選實(shí)施方式的范圍包括另外的實(shí)現(xiàn),其中可以不按所示出或討論的順序,包括根據(jù)所涉及的功能按基本同時(shí)的方式或按相反的順序,來執(zhí)行功能,這應(yīng)被本發(fā)明的實(shí)施例所屬技術(shù)領(lǐng)域的技術(shù)人員所理解。
應(yīng)當(dāng)理解,本發(fā)明的各部分可以用硬件、軟件、固件或它們的組合來實(shí)現(xiàn)。在上述實(shí)施方式中,多個(gè)步驟或方法可以用存儲(chǔ)在存儲(chǔ)器中且由合適的指令執(zhí)行系統(tǒng)執(zhí)行的軟件或固件來實(shí)現(xiàn)。例如,如果用硬件來實(shí)現(xiàn),和在另一實(shí)施方式中一樣,可用本領(lǐng)域公知的下列技術(shù)中的任一項(xiàng)或他們的組合來實(shí)現(xiàn):具有用于對數(shù)據(jù)信號實(shí)現(xiàn)邏輯功能的邏輯門電路的離散邏輯電路,具有合適的組合邏輯門電路的專用集成電路,可編程門陣列(pga),現(xiàn)場可編程門陣列(fpga)等。
本技術(shù)領(lǐng)域的普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法攜帶的全部或部分步驟是可以通過程序來指令相關(guān)的硬件完成,所述的程序可以存儲(chǔ)于一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括方法實(shí)施例的步驟之一或其組合。
此外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理模塊中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)模塊中。上述集成的模塊既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的形式實(shí)現(xiàn)。所述集成的模塊如果以軟件功能模塊的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),也可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中。
上述提到的存儲(chǔ)介質(zhì)可以是只讀存儲(chǔ)器,磁盤或光盤等。
在本說明書的描述中,參考術(shù)語“一個(gè)實(shí)施例”、“一些實(shí)施例”、“示例”、“具體示例”、或“一些示例”等的描述意指結(jié)合該實(shí)施例或示例描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)包含于本發(fā)明的至少一個(gè)實(shí)施例或示例中。在本說明書中,對上述術(shù)語的示意性表述不一定指的是相同的實(shí)施例或示例。而且,描述的具體特征、結(jié)構(gòu)、材料或者特點(diǎn)可以在任何的一個(gè)或多個(gè)實(shí)施例或示例中以合適的方式結(jié)合。
盡管上面已經(jīng)示出和描述了本發(fā)明的實(shí)施例,可以理解的是,上述實(shí)施例是示例性的,不能理解為對本發(fā)明的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的范圍內(nèi)可以對上述實(shí)施例進(jìn)行變化、修改、替換和變型。