本發(fā)明涉及信息技術領域,具體而言,涉及一種延時任務執(zhí)行方法及裝置。
背景技術:
目前,很多應用程序(app)或軟件系統(tǒng)等存在延時業(yè)務需求,也即,“一段時間后,完成一個工作任務”的需求。例如,在一個軟件系統(tǒng)中,在訂單完成后,若用戶一直不評價,則在48小時后自動將該訂單的評價設置為五星。針對這種業(yè)務需求,現(xiàn)有的處理方式是啟動一定時任務,每間隔預設時長遍歷軟件系統(tǒng)中的所有訂單,將完成時長達到48小時的訂單的評價設置為五星。
然而,這一處理方式每次都需要遍歷所有訂單,輪詢效率低。此外,由于每次都需要遍歷所有的訂單,為了降低設備運行壓力,需要將每兩次遍歷之間的時間間隔設置成較大的時長,如此,會造成延時業(yè)務實際的延時時長與真正需要的延時時長之間存在較大誤差,時效性不好。
技術實現(xiàn)要素:
有鑒于此,本發(fā)明的目的在于提供一種延時任務執(zhí)行方法及裝置,以改善上述問題。
為了實現(xiàn)上述目的,本發(fā)明實施例提供一種延時任務執(zhí)行方法,應用于電子設備,所述電子設備中包括一環(huán)形隊列,所述環(huán)形隊列中包括多個任務標簽;所述方法包括:
按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽;
接收延時消息,所述延時消息中包括待執(zhí)行任務的延時時長;
生成觸發(fā)所述待執(zhí)行任務的任務觸發(fā)指令;
計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中;
針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。
優(yōu)選地,在上述方法中,所述方法還包括:
在執(zhí)行任務標簽中的任務觸發(fā)指令后,刪除所述任務標簽中被執(zhí)行的任務觸發(fā)指令。
優(yōu)選地,在上述方法中,計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中的步驟,包括:
根據(jù)所述預設時間間隔計算所述延時時長內(nèi)能夠輪詢的任務標簽的數(shù)量;
比較所述數(shù)量與所述環(huán)形隊列中包括的任務標簽的總量的大??;
若所述數(shù)量小于所述總量,則若所述數(shù)量小于所述總量,則將當前正在被詢問的任務標簽之后的第所述數(shù)量個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為0,并將所述任務觸發(fā)指令存放至所述目標任務標簽中;
若所述數(shù)量大于或等于所述總量,則對所述數(shù)量與所述總量做除法,得到一商和余數(shù),將當前正在被詢問的任務標簽之后的第余數(shù)個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為所述商,以及將所述任務觸發(fā)指令存放至所述目標任務標簽中。
優(yōu)選地,在上述方法中,針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令的步驟,包括:
檢測正在被詢問的任務標簽中是否存在任務觸發(fā)指令;
若不存在任務觸發(fā)指令,則繼續(xù)詢問下一任務標簽;
若存在任務觸發(fā)指令,則判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長;
若未達到所述延時時長,則將所述任務觸發(fā)指令中的觸發(fā)標志位的值減1,并繼續(xù)詢問下一任務標簽;
若達到所述延時時長,則執(zhí)行所述任務觸發(fā)指令。
優(yōu)選地,在上述方法中,判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長的步驟,包括:
檢測該任務觸發(fā)指令中的觸發(fā)標志位的值是否為0;
若為0,則判定該任務觸發(fā)指令的存放時間達到所述延時時長;
若不為0,則判定該任務觸發(fā)指令的存放時間未達到所述延時時長。
本發(fā)明實施例還提供一種延時任務執(zhí)行裝置,應用于電子設備,所述電子設備包括一個環(huán)形隊列,所述環(huán)形隊列中包括多個任務標簽;所述裝置包括:
輪詢模塊,用于按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽;
延時消息接收模塊,用于接收延時消息,所述延時消息中包括待執(zhí)行任務的延時時長;
觸發(fā)指令生成模塊,用于生成觸發(fā)所述待執(zhí)行任務的任務觸發(fā)指令;
存放模塊,用于計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中;
執(zhí)行模塊,用于針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。
優(yōu)選地,在上述裝置中,所述裝置還包括:
刪除模塊,用于在執(zhí)行任務標簽中的任務觸發(fā)指令后,刪除所述任務標簽中被執(zhí)行的任務觸發(fā)指令。
優(yōu)選地,在上述裝置中,所述存放模塊計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中的方式包括:
根據(jù)所述預設時間間隔計算所述延時時長內(nèi)能夠輪詢的任務標簽的數(shù)量;
比較所述數(shù)量與所述環(huán)形隊列中包括的任務標簽的總量的大小;
若所述數(shù)量小于所述總量,則將當前正在被詢問的任務標簽之后的第所述數(shù)量個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為0,并將所述任務觸發(fā)指令存放至所述目標任務標簽中;
若所述數(shù)量大于或等于所述總量,則對所述數(shù)量與所述總量做除法,得到一商和余數(shù),將當前正在被詢問的任務標簽之后的第余數(shù)個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為所述商,以及將所述任務觸發(fā)指令存放至所述目標任務標簽中。
優(yōu)選地,在上述裝置中,所述執(zhí)行模塊執(zhí)行正在被詢問的任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令的方式包括:
檢測正在被詢問的任務標簽中是否存在任務觸發(fā)指令;
若不存在任務觸發(fā)指令,則繼續(xù)詢問下一任務標簽;
若存在任務觸發(fā)指令,則判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長;
若未達到所述延時時長,則將所述任務觸發(fā)指令中的觸發(fā)標志位的值減1,并繼續(xù)詢問下一任務標簽;
若達到所述延時時長,則執(zhí)行所述任務觸發(fā)指令。
優(yōu)選地,在上述裝置中,所述執(zhí)行模塊判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長的方式包括:
檢測該任務觸發(fā)指令中的觸發(fā)標志位的值是否為0;
若為0,則判定該任務觸發(fā)指令的存放時間達到所述延時時長;
若不為0,則判定該任務觸發(fā)指令的存放時間未達到所述延時時長。
本發(fā)明實施例提供的延時任務執(zhí)行方法及裝置,按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽,并在接收到延時消息后,生成觸發(fā)待執(zhí)行任務的任務觸發(fā)指令,并將生成的任務觸發(fā)指令存放至延時時長后正在被詢問的任務標簽中。針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。通過上述設計,一方面可以保證待執(zhí)行任務在延時時長后被執(zhí)行,提高時效性。另一方面,相比于每間隔一段時間遍歷所有待執(zhí)行任務是否達到延時時長的方式,上述設計的輪詢效率更高。
附圖說明
為了更清楚地說明本發(fā)明實施例的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,應當理解,以下附圖僅示出了本發(fā)明的某些實施例,因此不應被看作是對范圍的限定,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他相關的附圖。
圖1為本發(fā)明實施例提供的一種電子設備的連接框圖。
圖2為本發(fā)明實施例提供的一種延時任務執(zhí)行方法的流程示意圖。
圖3為圖2所示步驟s104的子步驟示意圖。
圖4為本發(fā)明實施例提供的一種延時任務執(zhí)行裝置的功能模塊框圖。
圖標:100-電子設備;110-延時任務執(zhí)行裝置;120-存儲器;130-處理器;111-輪詢模塊;112-延時消息接收模塊;113-觸發(fā)指令生成模塊;114-存放模塊;115-執(zhí)行模塊;116-刪除模塊。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。通常在此處附圖中描述和示出的本發(fā)明實施例的組件可以以各種不同的配置來布置和設計。
因此,以下對在附圖中提供的本發(fā)明的實施例的詳細描述并非旨在限制要求保護的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
應注意到:相似的標號和字母在下面的附圖中表示類似項,因此,一旦某一項在一個附圖中被定義,則在隨后的附圖中不需要對其進行進一步定義和解釋。
如圖1所示,是本發(fā)明實施例提供的一種電子設備100的方框示意圖。所述電子設備100包括延時任務執(zhí)行裝置110、存儲器120及處理器130。
所述存儲器120及處理器130等各元件相互之間直接或間接地電性連接,以實現(xiàn)數(shù)據(jù)的傳輸或交互。例如,這些元件相互之間可通過一條或多條通訊總線或信號線實現(xiàn)電性連接。所述延時任務執(zhí)行裝置110可包括至少一個可以軟件或固件(firmware)的形式存儲于所述存儲器120中或固化在所述電子設備100的操作系統(tǒng)(operatingsystem,os)中的軟件功能模塊。其中,所述存儲器120可以是,但不限于,隨機存取存儲器(randomaccessmemory,ram),只讀存儲器(readonlymemory,rom),可編程只讀存儲器(programmableread-onlymemory,prom),可擦除只讀存儲器(erasableprogrammableread-onlymemory,eprom),電可擦除只讀存儲器(electricerasableprogrammableread-onlymemory,eeprom)等。
所述處理器130可以是一種集成電路芯片,具有信號的處理能力。所述處理器130可以是通用處理器,包括中央處理器(centralprocessingunit,簡稱cpu)、網(wǎng)絡處理器(networkprocessor,簡稱np)等。還可以是數(shù)字信號處理器(dsp)、專用集成電路(asic)、現(xiàn)場可編程門陣列(fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件??梢詫崿F(xiàn)或者執(zhí)行本發(fā)明實施例中的公開的各方法、步驟及邏輯框圖。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。
可以理解,圖1所示結構僅為示意。電子設備100還可以包括比圖1所示更多或者更少的組件,或具有與圖1所示不同的配置。其中,圖1所示的各組件可以采用硬件、軟件或其組合實現(xiàn)。
如圖2所示,是本發(fā)明實施例提供的一種延時任務執(zhí)行方法的流程示意圖,所述方法應用于圖1所示的電子設備100。所述電子設備100中包括一環(huán)形隊列,所述環(huán)形隊列包括多個任務標簽。其中,所述任務標簽可以為slot。也即,所述環(huán)形隊列中包括多個slot。
需要說明的是,所述環(huán)形隊列是一個首尾相連的fifio(firstinputfirstoutput)的數(shù)據(jù)結構,采用數(shù)組的線性空間。需要說明的是,所述環(huán)形隊列在內(nèi)存上并沒有環(huán)形的結構,是采用數(shù)組的線性空間來實現(xiàn)的。也即,在邏輯上將數(shù)組的第一個元素與最后一個元素連接,形成一個存放隊列的環(huán)形空間。本實施例中,所述環(huán)形隊列的每個元素中存儲有一個所述任務標簽。
下面將對圖2所示具體流程及步驟進行詳細闡述。
步驟s101,按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽。
在本實施例中,所述電子設備100按照所述環(huán)形隊列中各元素的連接順序,依次詢問各元素中的任務標簽內(nèi)存儲的內(nèi)容。
作為一種實施方式,可啟動一定時器(timer),以將每兩次詢問之間的間隔時長控制為所述預設時間間隔。其中,所述預設時間間隔可根據(jù)實際需求進行靈活設置,例如,為了便于計算,可將所述預設時間間隔設置為1秒。
步驟s102,接收延時消息,所述延時消息中包括待執(zhí)行任務的延時時長。
步驟s103,生成觸發(fā)所述待執(zhí)行任務的任務觸發(fā)指令。
以購物應用程序為例,假設該購物應用程序存在如下延時業(yè)務需求:在每個用戶訂單完成48小時后,若用戶未進行評價,則按照預設方式對該用戶訂單進行評價。
通常,應用程序在一個用戶訂單完成時(如,用戶點擊確認收貨),會產(chǎn)生一延時消息,所述延時消息可包括用戶訂單的編號、指向待執(zhí)行任務的指針以及待執(zhí)行任務的延時時長。其中,所述待執(zhí)行任務即為“按照預設方式評價該編號對應的用戶訂單”。
電子設備100中可存儲有實現(xiàn)該待執(zhí)行任務的代碼,并將指向該代碼的指針作為延時消息的參數(shù)發(fā)出。應當理解,所述指向該代碼的指針即為指向待執(zhí)行任務的指針,通過該指針可實現(xiàn)對待執(zhí)行任務的調用執(zhí)行。
針對接收到的延時消息,所述電子設備100可以生成一任務觸發(fā)指令,用于觸發(fā)所述待執(zhí)行任務執(zhí)行。其中,所述任務觸發(fā)指令可包括指向待執(zhí)行任務的指針以及一觸發(fā)標志位,其中所述觸發(fā)標志位可用于判定是否滿足觸發(fā)條件,所述指針可用于調用待執(zhí)行任務。
步驟s104,計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中。
在本實施例中,所述電子設備100始終按照所述預設時間間隔輪詢所述環(huán)形隊列中的任務標簽,經(jīng)發(fā)明人研究發(fā)現(xiàn),經(jīng)過所述延時時長后,所述電子設備100必然會輪詢至所述環(huán)形隊列中的某一個任務標簽,若將所述任務觸發(fā)指令存放至該任務標簽中,則在所述延時時長后,所述任務觸發(fā)指令恰好被所述電子設備100詢問,此時,所述電子設備100即可執(zhí)行所述任務觸發(fā)指令,進而觸發(fā)所述待執(zhí)行任務執(zhí)行。
但由于環(huán)形隊列是基于定長數(shù)組實現(xiàn)的,因此輪詢環(huán)形隊列一次所能計量的時長可能會小于實際需要的延時時長,因此,有時會需要電子設備100輪詢整個環(huán)形隊列多次才達到所述延時時長。因此,在本實施例中,可根據(jù)延時時長的大小設定所述觸發(fā)標志位的值。
可選地,如圖3所示,在本實施例中,步驟s104可以包括步驟s201、步驟s202及步驟s204四個子步驟。
步驟s201,根據(jù)所述預設時間間隔計算所述延時時長內(nèi)能夠輪詢的任務標簽的數(shù)量。
步驟s202,比較所述數(shù)量與所述環(huán)形隊列中包括的任務標簽的總量的大小。也即,判斷所述數(shù)量是否小于所述總量。
若所述數(shù)量小于所述總量,則執(zhí)行步驟s203,若所述數(shù)量大于或等于(也即,不小于)所述總量,則執(zhí)行步驟s204。
步驟s203,將當前正在被詢問的任務標簽之后的第所述數(shù)量個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位設置為0,并將所述任務觸發(fā)指令存放至所述目標任務標簽中。
步驟s204,對所述數(shù)量與所述總量做除法,得到一商和余數(shù),將當前正在被詢問的任務標簽之后的第余數(shù)個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為所述商,以及將所述任務觸發(fā)指令存放至所述目標任務標簽中。
在本實施例中,以所述電子設備100當前正在詢問的任務標簽為起點,所述電子設備100往后輪詢所述數(shù)量個任務標簽可計時達到所述延時時長。
當所述數(shù)量大于所述總量時,例如,假設所述環(huán)形隊列包括3600個任務標簽,所述預設時間間隔為1秒。若所述延時時長為3610秒,通過計算可得,在3610秒內(nèi)所述電子設備100能夠輪詢3610個任務標簽。3610大于3600,若電子設備100當前正在詢問環(huán)形隊列中的任務標簽a,則電子設備100在從a開始輪訓完所述環(huán)形隊列一次后,還需從a開始輪詢至a之后的第10個任務標簽b才可計時達到3610秒。因此,可將所述任務標簽b作為延時3610秒這一延時消息對應的任務觸發(fā)指令的目標任務標簽,并將所述任務觸發(fā)指令中的觸發(fā)標志位設置為1,表示電子設備100需輪詢整個環(huán)形隊列一次。
其中,值得說明的是,當電子設備100第一次輪詢至任務標簽b時,所述任務觸發(fā)指令的存放時間并未達到3610秒,當電子設備100第二次輪詢至任務標簽b時,所述任務觸發(fā)指令的存放時間才打到3610秒。
當所述數(shù)量小于所述總量時,其計算過程類似,只需直接將觸發(fā)標志位的值設置為0即可。
步驟s105,針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。
在本實施例中,作為一種實施方式,所述步驟s105可包括以下步驟。
首先,檢測正在被詢問的任務標簽中是否存在任務觸發(fā)指令。若不存在任務觸發(fā)指令,則繼續(xù)詢問下一任務標簽。若存在任務觸發(fā)指令,則判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長。
可選地,在本實施例中,可通過以下步驟判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長。
檢測該任務觸發(fā)指令中的觸發(fā)標志位的值是否為0。若為0,則判定該任務觸發(fā)指令的存放時間達到所述延時時長。若不為0,則判定該任務觸發(fā)指令的存放時間未達到所述延時時長。
然后,若未達到所述延時時長,則將所述任務觸發(fā)指令中的觸發(fā)標志位減1,并繼續(xù)詢問下一任務標簽。若達到所述延時時長,則執(zhí)行所述任務觸發(fā)指令。
以上述延時時長為3610秒為例,當電子設備100第一次輪詢至目標任務標簽b時,目標任務標簽b中存在任務觸發(fā)指令,且所述任務觸發(fā)指令中的觸發(fā)標志位不為0,故將所述觸發(fā)標志位減1,并繼續(xù)輪詢。當電子設備100再次輪詢至目標任務標簽b時,目標任務標簽b中存在任務觸發(fā)指令,且所述任務觸發(fā)指令的觸發(fā)標志位為0,故執(zhí)行所述任務觸發(fā)指令,進而通過所述任務觸發(fā)指令中的指向待執(zhí)行任務的指針調用執(zhí)行所述待執(zhí)行任務。
可選地,為了避免已經(jīng)被執(zhí)行的任務觸發(fā)指令被反復執(zhí)行進而導致待執(zhí)行任務被反復執(zhí)行,可在執(zhí)行任務標簽中的任務觸發(fā)指令后,刪除所述任務標簽中被執(zhí)行的任務觸發(fā)指令。
如圖4所示,是本發(fā)明實施例提供的一種延時任務執(zhí)行裝置110的功能模塊框圖。所述延時任務執(zhí)行裝置110包括輪詢模塊111、延時消息接收模塊112、觸發(fā)指令生成模塊113、存放模塊114及執(zhí)行模塊115。
其中,所述輪詢模塊111用于按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽。
在本實施例中,關于所述輪詢模塊111的描述具體可參考對圖2所示步驟s101的詳細描述,也即,所述步驟s101可由所述輪詢模塊111執(zhí)行。
所述延時消息接收模塊112用于接收延時消息,所述延時消息中包括待執(zhí)行任務的延時時長。
在本實施例中,關于所述延時消息接收模塊112的描述具體可參考對圖2所示步驟s102的詳細描述,也即,所述步驟s102可由所述延時消息接收模塊112執(zhí)行。
所述觸發(fā)指令生成模塊113用于生成觸發(fā)所述待執(zhí)行任務的任務觸發(fā)指令。
在本實施例中,關于所述觸發(fā)指令生成模塊113的描述具體可參考對圖2中所示步驟s103的詳細描述,也即,所述步驟s103可由所述觸發(fā)指令生成模塊113執(zhí)行。
所述存放模塊114用于計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中。
可選地,在本實施例中,所述存放模塊114計算得到所述延時時長后正在被詢問的任務標簽作為目標任務標簽,并將所述任務觸發(fā)指令存放至所述目標任務標簽中的方式可以包括:
根據(jù)所述預設時間間隔計算所述延時時長內(nèi)能夠輪詢的任務標簽的數(shù)量。
比較所述數(shù)量與所述環(huán)形隊列中包括的任務標簽的總量的大小。
若所述數(shù)量小于所述總量,則將當前正在被詢問的任務標簽之后的第所述數(shù)量個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為0,并將所述任務觸發(fā)指令存放至所述目標任務標簽中。
若所述數(shù)量大于或等于所述總量,則對所述數(shù)量與所述總量做除法,得到一商和余數(shù),將當前正在被詢問的任務標簽之后的第余數(shù)個任務標簽作為所述目標任務標簽,將所述觸發(fā)標志位的值設置為所述商,以及將所述任務觸發(fā)指令存放至所述目標任務標簽中。
在本實施例中,關于所述存放模塊114的描述具體可參考對圖2所示步驟s104的詳細描述,也即,所述步驟s104可由所述存放模塊114執(zhí)行。
所述執(zhí)行模塊115用于針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。
在本實施例中,關于所述執(zhí)行模塊115的描述具體可參考對圖2所示步驟s105的詳細描述,也即,所述步驟s105可由所述執(zhí)行模塊115執(zhí)行。
可選地,在本實施例中,所述執(zhí)行模塊115執(zhí)行正在被詢問的任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令的方式可以包括:
首先,檢測正在被詢問的任務標簽中是否存在任務觸發(fā)指令。若不存在任務觸發(fā)指令,則繼續(xù)詢問下一任務標簽。若存在任務觸發(fā)指令,則判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長。
其中,可選地,所述執(zhí)行模塊115判斷該任務觸發(fā)指令的存放時間是否達到所述延時時長的方式包括:
檢測該任務觸發(fā)指令中的觸發(fā)標志位的值是否為0。若為0,則判定該任務觸發(fā)指令的存放時間達到所述延時時長。若不為0,則判定該任務觸發(fā)指令的存放時間未達到所述延時時長。
然后,若未達到所述延時時長,則將所述任務觸發(fā)指令中的觸發(fā)標志位的值減1,并繼續(xù)詢問下一任務標簽。若達到所述延時時長,則執(zhí)行所述任務觸發(fā)指令。
可選地,請再參閱圖4,所述延時任務執(zhí)行裝置110還可以包括刪除模塊116。
所述刪除模塊116用于在執(zhí)行任務標簽中的任務觸發(fā)指令后,刪除所述任務標簽中被執(zhí)行的任務觸發(fā)指令。
在本實施例中,關于所述刪除模塊116的描述可參考上述內(nèi)容中的相關描述。
綜上所述,本發(fā)明實施例提供的延時任務執(zhí)行方法及裝置,按照預設時間間隔依次輪詢所述環(huán)形隊列中的任務標簽,并在接收到延時消息后,生成觸發(fā)待執(zhí)行任務的任務觸發(fā)指令,并將生成的任務觸發(fā)指令存放至延時時長后正在被詢問的任務標簽中。針對每個正在被詢問的任務標簽,執(zhí)行該任務標簽中存放時間達到所述延時時長的任務觸發(fā)指令。通過上述設計,一方面可以保證待執(zhí)行任務在延時時長后被執(zhí)行,提高時效性。另一方面,相比于每間隔一段時間遍歷所有待執(zhí)行任務是否達到延時時長的方式,上述設計的輪詢效率更高。
以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。