一種定時任務的處理方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種定時任務的處理方法及裝置,涉及通信【技術領域】,用以在降低系統(tǒng)的壓力的同時,能夠及時地對定時任務進行處理。該方法包括:在預設的每一第一周期結束前,檢測當前是否存在定時任務序列;如果是,則根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列;在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
【專利說明】一種定時任務的處理方法及裝置
【技術領域】
[0001]本發(fā)明涉及通信【技術領域】,具體涉及一種定時任務的處理方法及裝置。
【背景技術】
[0002]針對目前的定時任務處理中,定時器時間到后,會觸發(fā)遍歷定時任務序列,依據獲取到的定時任務,經過一些判斷和計算處理,來確定每個需要處理的定時任務的信息。由于對于每個具體的定時任務,都需要對每個定時任務包含的多個時間信息進行復雜的計算過程,來判斷是否滿足觸發(fā)條件,觸發(fā)定時任務。整個處理過程,所以如果定時任務序列中的待執(zhí)行的定時任務較多時,會使得判斷和計算的時間較長,使得需要及時被處理的定時任務無法被及時處理,從而造成定時任務處理上的延誤,使得問題在分析、結論推理的準確性上產生一定的誤差。
【發(fā)明內容】
[0003]本發(fā)明實施例提供了一種定時任務的處理方法及裝置,用以在降低系統(tǒng)的壓力的同時,能夠及時地對定時任務進行處理。
[0004]本發(fā)明實施例提供的一種定時任務的處理方法,該方法包括:
[0005]在預設的每一第一周期結束前,檢測當前是否存在定時任務序列;
[0006]如果是,則根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列;
[0007]在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
[0008]在本發(fā)明上述實施例中,將定時任務分成每個周期進行,也就是將定時任務“分期進行”,在每個周期開始的時候,根據定時任務序列中的任務,生成一個該周期內需要觸發(fā)的執(zhí)行命令序列,該執(zhí)行命令序列中的每個執(zhí)行命令由于每個只執(zhí)行一次,因為定時任務包含的時間信息可能會非常多(例如如果該定時任務為周期性任務,則會包括觸發(fā)觸發(fā)、循環(huán)周期),而執(zhí)行命令只包含一個觸發(fā)的時間,所以系統(tǒng)對執(zhí)行命令的判斷計算過程明顯會快一些,而且對于一些觸發(fā)時間還比較遠的定時任務先放在一邊,在本執(zhí)行命令序列中不進行判斷,執(zhí)行命令序列中的執(zhí)行命令的數量有可能會少于定時任務序列中的定時任務的數量。
[0009]在本發(fā)明上述實施例的基礎上,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的定時執(zhí)行命令序列,具體包括:
[0010]對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內;
[0011]對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令;
[0012]所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
[0013]在本發(fā)明實施例中,提供了一種定時執(zhí)行命令序列的生成過程,即在每個第一周期開始的時候,根據該周期的時間范圍(起始時間,結束時間)為標準,判斷每個定時任務的觸發(fā)時間是否落入了該第一周期的時間范圍內,對落入的這些定時任務生成對應的執(zhí)行命令,未落入的則不生成。最后在根據觸發(fā)時間的先后順序形成序列,保證在執(zhí)行的時候先對觸發(fā)時間近的進行計算和判斷,保證每個執(zhí)行命令的準時觸發(fā)。
[0014]在本發(fā)明上述實施例的基礎上,更佳地,對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令,具體包括:
[0015]在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令;
[0016]在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
[0017]在本發(fā)明上述實施例中,提供了一種更詳細的執(zhí)行命令的生成實施例。由于定時任務一般分為周期性任務和一次性任務,所以對于一次性任務來說,因為觸發(fā)時間只有一個,所以只要簡單的判斷這個觸發(fā)時間是否落入了范圍即可決定是否生成執(zhí)行命令,但是周期性任務具備多個觸發(fā)時間,所以需要判斷這些觸發(fā)時間哪些落入了范圍,這樣就可能會生成多個執(zhí)行命令。
[0018]在本發(fā)明上述實施例的基礎上,在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列,具體包括:
[0019]在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器;
[0020]在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令;
[0021]將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除;
[0022]根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
[0023]在本發(fā)明實上述實施例中,提供了一種執(zhí)行命令序列的執(zhí)行方式,為了更好的達到降低系統(tǒng)壓力的效果,不采用【背景技術】中介紹的定時器周期性觸發(fā)系統(tǒng)遍歷定時任務序列的方式,而采用觸發(fā)器觸發(fā)系統(tǒng)對執(zhí)行命令序列的遍歷判斷和計算,在執(zhí)行命令序列開始實施后,對首個執(zhí)行命令,也就是觸發(fā)時間最近的執(zhí)行命令建立一個觸發(fā)器,在觸發(fā)器觸發(fā)時,系統(tǒng)開始遍歷執(zhí)行命令序列,對觸發(fā)時間與觸發(fā)器相等的執(zhí)行命令進行觸發(fā)。
[0024]可以理解的是,本發(fā)明實施例還優(yōu)選包括一個判斷過程,在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài);
[0025]如果是,則執(zhí)行所述執(zhí)行命令;
[0026]如果否,則不執(zhí)行所述執(zhí)行命令。
[0027]在本發(fā)明實施例中,還包括了一個判斷過程,就是在一個執(zhí)行命令已經滿足了觸發(fā)時間時,先判斷該任務是不是為可執(zhí)行狀態(tài),可執(zhí)行狀態(tài)的意思是,是不是被允許執(zhí)行或系統(tǒng)現在能不能完成該任務,如果執(zhí)行命令時不被允許執(zhí)行的,或系統(tǒng)現在沒有能力完成該任務,則即使已經到了觸發(fā)時間,該執(zhí)行命令也不會被觸發(fā)。
[0028]在本發(fā)明實施例的上述基礎上,優(yōu)選地,在預設的每一第一周期結束前,檢測當前是否存在定時任務序列,具體包括:[0029]在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務;
[0030]所述檢測任務檢測當前是否存在定時任務序列。
[0031]可以理解的是,每次根據定時任務序列生成執(zhí)行任務序列時,應該提前生成,以保證在每個第一周期開始的時候,執(zhí)行任務序列已經生成完畢,不會耽誤執(zhí)行命令的觸發(fā),上述的第一時刻可以根據需要設定,例如如果定時任務較多,則可以將第一時刻設定的離第一周期結束的時間長一些。
[0032]本發(fā)明實施例提供的一種定時任務的處理裝置,該裝置包括:
[0033]檢測模塊,用于在預設的每一第一周期結束前,檢測當前是否存在定時任務序列;
[0034]生成模塊,用于在所述檢測模塊的檢測結果為是時,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列;
[0035]執(zhí)行模塊,用于在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
[0036]在本發(fā)明上述實施例中,提供了一種定時任務的處理裝置,將定時任務分成每個周期進行,也就是將定時任務“分期進行”,在每個周期開始的時候,如果檢測模塊檢測到當前存在定時任務序列,生成模塊則根據定時任務序列中的任務,生成一個該周期內需要觸發(fā)的執(zhí)行命令序列,由執(zhí)行模塊運行該執(zhí)行命令序列中的每個執(zhí)行命令,由于每個執(zhí)行命令只執(zhí)行一次,又因為定時任務包含的時間信息可能會非常多(例如如果該定時任務為周期性任務,則會包括觸發(fā)觸發(fā)、循環(huán)周期),而執(zhí)行命令只包含一個觸發(fā)的時間,所以系統(tǒng)對執(zhí)行命令的判斷計算過程明顯會快一些,而且對于一些觸發(fā)時間還比較遠的定時任務先放在一邊,在本執(zhí)行命令序列中不進行判斷,執(zhí)行命令序列中的執(zhí)行命令的數量有可能會少于定時任務序列中的定時任務的數量。
[0037]在本發(fā)明上述實施例的基礎上,所述生成模塊,具體用于:
[0038]對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內;
[0039]對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令;
[0040]所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
[0041]在本發(fā)明上述實施例的基礎上,更佳地,所述生成模塊,進一步具體包括:
[0042]在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令;
[0043]在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
[0044]在本發(fā)明上述實施例的基礎上,所述執(zhí)行模塊,具體用于:
[0045]在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器;
[0046]在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令;
[0047]將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除;
[0048]根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
[0049]可以理解的是,該裝置還包括判斷模塊,用于在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài);
[0050]如果是,則通知所述執(zhí)行模塊執(zhí)行所述執(zhí)行命令;
[0051]如果否,則不執(zhí)行所述執(zhí)行命令。
[0052]在本發(fā)明實施例的上述基礎上,優(yōu)選地,所述檢測模塊,具體用于:
[0053]在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務;
[0054]所述檢測任務檢測當前是否存在定時任務序列。
[0055]本發(fā)明實施例,將用戶設置的定時任務序列拆分為不同周期內的“一次性任務”,將定時任務分成每個周期進行,也就是將定時任務“分期進行”,由于每個執(zhí)行命令只執(zhí)行一次,只包含一個觸發(fā)的時間,所以系統(tǒng)對執(zhí)行命令的判斷計算過程相對于傳統(tǒng)的定時任務明顯會快一些,而且對于一些觸發(fā)時間還比較遠的定時任務先放在一邊,在本執(zhí)行命令序列中不進行判斷,從而減輕了系統(tǒng)的壓力,保證了定時任務的按時觸發(fā)。
【專利附圖】
【附圖說明】
[0056]圖1為本發(fā)明實施例提供的一種定時任務的處理方法的方法流程示意圖;
[0057]圖2為本發(fā)明實施例提供的一種定時任務的處理裝置的裝置結構示意圖。
【具體實施方式】
[0058]由于現有的定時任務序列如果非常長時(含有的定時任務非常多),導致系統(tǒng)分析判斷的時間過長,容易發(fā)生需要定時被觸發(fā)的定時任務延誤。
[0059]因此,需要提供一種既可以保證定時任務被按時執(zhí)行,又不影響分析推理結論準確性的方法,來保證定時任務執(zhí)行的及時性和執(zhí)行結果的可靠性。這就是本發(fā)明所需要解決的問題。
[0060]針對本發(fā)明的上述目的,本發(fā)明實施例首先提供了一種定時任務的處理方法,如圖1所示,該方法包括:
[0061]SlOl,在預設的每一第一周期結束前,檢測當前是否存在定時任務序列;
[0062]S102,如果是,則根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列;
[0063]S103,在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
[0064]在本發(fā)明上述實施例中,將定時任務分成每個周期進行,也就是將定時任務“分期進行”,在每個周期開始的時候,根據定時任務序列中的任務,生成一個該周期內需要觸發(fā)的執(zhí)行命令序列,該執(zhí)行命令序列中的每個執(zhí)行命令由于每個只執(zhí)行一次,因為定時任務包含的時間信息可能會非常多(例如如果該定時任務為周期性任務,則會包括觸發(fā)觸發(fā)、循環(huán)周期),而執(zhí)行命令只包含一個觸發(fā)的時間,所以系統(tǒng)對執(zhí)行命令的判斷計算過程明顯會快一些,而且對于一些觸發(fā)時間還比較遠的定時任務先放在一邊,在本執(zhí)行命令序列中不進行判斷,執(zhí)行命令序列中的執(zhí)行命令的數量有可能會少于定時任務序列中的定時任務的數量。
[0065]所以總體來說,單個命令的計算時間降低,總體需要計算的命令數量降低,明顯可以降低系統(tǒng)的計算壓力,加快所有任務整體的計算時間,保證每個定時任務都能按時觸發(fā),避免延時的發(fā)生。
[0066]可以理解的是,觸發(fā)時間的最小單位可以到分鐘,也可以到秒,具體由用戶確定。
[0067]在本發(fā)明上述實施例的基礎上,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的定時執(zhí)行命令序列,具體包括:
[0068]對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內;
[0069]對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令;
[0070]所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
[0071]在本發(fā)明實施例中,提供了一種定時執(zhí)行命令序列的生成過程,即在每個第一周期開始的時候,根據該周期的時間范圍(起始時間,結束時間)為標準,判斷每個定時任務的觸發(fā)時間是否落入了該第一周期的時間范圍內,對落入的這些定時任務生成對應的執(zhí)行命令,未落入的則不生成。最后在根據觸發(fā)時間的先后順序形成序列,保證在執(zhí)行的時候先對觸發(fā)時間近的進行計算和判斷,保證每個執(zhí)行命令的準時觸發(fā)。
[0072]在本發(fā)明上述實施例的基礎上,更佳地,對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令,具體包括:
[0073]在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令;
[0074]在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
[0075]在本發(fā)明上述實施例中,提供了一種更詳細的執(zhí)行命令的生成實施例。由于定時任務一般分為周期性任務和一次性任務,所以對于一次性任務來說,因為觸發(fā)時間只有一個,所以只要簡單的判斷這個觸發(fā)時間是否落入了范圍即可決定是否生成執(zhí)行命令,但是周期性任務具備多個觸發(fā)時間,所以需要判斷這些觸發(fā)時間哪些落入了范圍,這樣就可能會生成多個執(zhí)行命令。
[0076]為了更容易的理解周期性任務和一次性任務的不同,以下介紹幾個詳細實施例:
[0077]1,對于一次性任務,獲取的對應時間信息為該一次性任務的開始日期、結束日期。系統(tǒng)根據下一次第一周期的時間范圍來判斷是否需要生成對應的執(zhí)行子任務。
[0078]周期性任務可包含隔天執(zhí)行,隔周執(zhí)行,隔月執(zhí)行等等:
[0079]2,針對時間模式為隔天執(zhí)行的定時任務,獲取該定時任務的開始日期、當前日期和循環(huán)周期,以便系統(tǒng)根據這些時間信息計算該定時任務在下一次第一周期的時間范圍內是否存在一個或多個需要執(zhí)行的子任務。
[0080]3,針對時間模式為隔周執(zhí)行的定時任務,獲取該定時任務的開始日期、當前日期、循環(huán)周期和每周中的執(zhí)行日期,以便系統(tǒng)根據這些時間信息計算該定時任務在下一次第一周期的時間范圍內是否存在一個或多個需要執(zhí)行的子任務。
[0081]4,針對時間模式為隔月執(zhí)行的定時任務,獲取該定時任務的開始日期、當前日期、循環(huán)周期和每月中的執(zhí)行日期,以便系統(tǒng)根據這些時間信息計算該定時任務在下一次第一周期的時間范圍內是否存在一個或多個需要執(zhí)行的子任務。[0082]在本發(fā)明上述實施例的基礎上,在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列,具體包括:
[0083]在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器;
[0084]在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令;
[0085]將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除;
[0086]根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
[0087]在本發(fā)明實上述實施例中,提供了一種執(zhí)行命令序列的執(zhí)行方式,為了更好的達到降低系統(tǒng)壓力的效果,不采用【背景技術】中介紹的定時器周期性觸發(fā)系統(tǒng)遍歷定時任務序列的方式,而采用觸發(fā)器觸發(fā)系統(tǒng)對執(zhí)行命令序列的遍歷判斷和計算,在執(zhí)行命令序列開始實施后,對首個執(zhí)行命令,也就是觸發(fā)時間最近的執(zhí)行命令建立一個觸發(fā)器,在觸發(fā)器觸發(fā)時,系統(tǒng)開始遍歷執(zhí)行命令序列,對觸發(fā)時間與觸發(fā)器相等的執(zhí)行命令進行觸發(fā)。
[0088]由于正如上述所述,執(zhí)行命令是一種一次性的命令,在執(zhí)行過一次后便失去了意義,所以在本發(fā)明實施例中,系統(tǒng)在一次遍歷完成后,還會刪除這些已經被觸發(fā)的執(zhí)行命令,目的是避免下一次遍歷時對這些執(zhí)行命令又進行判斷和計算,延誤其他未被觸發(fā)的執(zhí)行命令的準確觸發(fā)。
[0089]在觸發(fā)器觸發(fā)時,系統(tǒng)整體遍歷所有的執(zhí)行命令,目的在于避免出現一個以上的執(zhí)行命令觸發(fā)時間相同時,出現漏觸發(fā)的情況。
[0090]可以理解的是,本發(fā)明實施例還優(yōu)選包括一個判斷過程,在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài);
[0091]如果是,則執(zhí)行所述執(zhí)行命令;
[0092]如果否,則不執(zhí)行所述執(zhí)行命令。
[0093]在本發(fā)明實施例中,還包括了一個判斷過程,就是在一個執(zhí)行命令已經滿足了觸發(fā)時間時,先判斷該任務是不是為可執(zhí)行狀態(tài),可執(zhí)行狀態(tài)的意思是,是不是被允許執(zhí)行或系統(tǒng)現在能不能完成該任務,如果執(zhí)行命令時不被允許執(zhí)行的,或系統(tǒng)現在沒有能力完成該任務,則即使已經到了觸發(fā)時間,該執(zhí)行命令也不會被觸發(fā)。
[0094]在本發(fā)明實施例的上述基礎上,優(yōu)選地,在預設的每一第一周期結束前,檢測當前是否存在定時任務序列,具體包括:
[0095]在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務;
[0096]所述檢測任務檢測當前是否存在定時任務序列。
[0097]可以理解的是,每次根據定時任務序列生成執(zhí)行任務序列時,應該提前生成,以保證在每個第一周期開始的時候,執(zhí)行任務序列已經生成完畢,不會耽誤執(zhí)行命令的觸發(fā),上述的第一時刻可以根據需要設定,例如如果定時任務較多,則可以將第一時刻設定的離第一周期結束的時間長一些。
[0098]例如,如果第一周期是以天為單位的話,那么每個第一周期的起始時間是24點,那么第一時刻可以設置在22點。
[0099]為了更好的理解本發(fā)明技術方案,下面提供一個詳細的實施例:[0100]首先對時間進行具體的限定:
[0101]當前時間為2013年9月12日,星期四,20點00分
[0102]設定的第一周期為以天為周期;
[0103]第一時刻為22點00分;
[0104]定時任務序列包括5個任務:
[0105]定時任務1,一次性任務,觸發(fā)時間為2013年9月12日,星期四,07點00分;
[0106]定時任務2,周期性任務,觸發(fā)時間為每天的06點00分觸發(fā);
[0107]定時任務3,一次性任務,觸發(fā)時間為2013年9月13日,星期五,07點00分觸發(fā);
[0108]定時任務4,周期性任務,觸發(fā)時間為每周五的09點00分觸發(fā);
[0109]定時任務5,周期性任務,觸發(fā)時間為每月的12日17點00分觸發(fā)。
[0110]具體的過程為:
[0111]I,在當前時間由20點00分到22點00分時,檢測當前是否存在定時任務序列;
[0112]2,判斷結果為是,對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內;
[0113]1),定時任務I的觸發(fā)時間與當前時間相比,判定為過期任務,未落入下一個第一周期的時間范圍內(2013年9月13日,星期五,00點00分至2013年9月14日,星期六,00點00分);
[0114]2),定時任務2的下一次觸發(fā)時間為2013年9月13日,星期五,06點00分,落入下一個第一周期的時間范圍內;
[0115]3),定時任務3的觸發(fā)時間與當前時間相比,判定為未過期任務,落入下一個第一周期的時間范圍內;
[0116]4),定時任務4的下一次觸發(fā)時間為2013年9月13日,星期五,09點00分,落入下一個第一周期的時間范圍內
[0117]5),定時任務5的下一次觸發(fā)時間為2013年10月12日的17點00分,未落入下一個第一周期的時間范圍內;
[0118]3,對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令;
[0119]1),針對定時任務2,定時任務3和定時任務4的下一次觸發(fā)時間分別生成了 3個一次性的執(zhí)行命令1,執(zhí)行命令2和執(zhí)行命令3 ;
[0120]4,所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列;
[0121]1),根據上述執(zhí)行命令2,執(zhí)行命令3和執(zhí)行命令4的下一次觸發(fā)時間排序后的結果為,執(zhí)行命令2——執(zhí)行命令3——執(zhí)行命令4 ;
[0122]5,在下一第一周期開始時(2013年9月13日,星期五,00點00分),根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器(2013年9月13日,星期五,06點00分);
[0123]6,在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,執(zhí)行命令2被觸發(fā)(執(zhí)行命令3和4由于觸發(fā)時間不匹配不觸發(fā));
[0124]7,將已經觸發(fā)的執(zhí)行命令2從所述執(zhí)行命令序列中刪除;
[0125]根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器(2013年9月13日,星期五,07點00分),如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
[0126]至此,一個執(zhí)行命令序列的執(zhí)行完畢代表著該第一周期的所有任務完畢。
[0127]對應上述方法,本發(fā)明實施例提供了一種定時任務的處理裝置,如圖2所示,該裝置包括:
[0128]檢測模塊1,用于在預設的每一第一周期結束前,檢測當前是否存在定時任務序列;
[0129]生成模塊2,用于在所述檢測模塊的檢測結果為是時,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列;
[0130]執(zhí)行模塊3,用于在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
[0131]在本發(fā)明上述實施例中,提供了一種定時任務的處理裝置,將定時任務分成每個周期進行,也就是將定時任務“分期進行”,在每個周期開始的時候,如果檢測模塊檢測到當前存在定時任務序列,生成模塊則根據定時任務序列中的任務,生成一個該周期內需要觸發(fā)的執(zhí)行命令序列,由執(zhí)行模塊運行該執(zhí)行命令序列中的每個執(zhí)行命令,由于每個執(zhí)行命令只執(zhí)行一次,又因為定時任務包含的時間信息可能會非常多(例如如果該定時任務為周期性任務,則會包括觸發(fā)觸發(fā)、循環(huán)周期),而執(zhí)行命令只包含一個觸發(fā)的時間,所以系統(tǒng)對執(zhí)行命令的判斷計算過程明顯會快一些,而且對于一些觸發(fā)時間還比較遠的定時任務先放在一邊,在本執(zhí)行命令序列中不進行判斷,執(zhí)行命令序列中的執(zhí)行命令的數量有可能會少于定時任務序列中的定時任務的數量。
[0132]所以總體來說,單個命令的計算時間降低,總體需要計算的命令數量降低,明顯可以降低系統(tǒng)的計算壓力,加快所有任務整體的計算時間,保證每個定時任務都能按時觸發(fā),避免延時的發(fā)生。
[0133]可以理解的是,觸發(fā)時間的最小單位可以到分鐘,也可以到秒,具體由用戶確定。
[0134]另外,為了保證每次周期進行執(zhí)行任務序列切換時的無縫連接,可以設置兩個執(zhí)行模塊,其中一個運行時,另外一個等待生成模塊生成下一周期運行的執(zhí)行任務序列,在周期交替時,執(zhí)行模塊也執(zhí)行切換,從而避免延誤某些任務的運行。
[0135]在本發(fā)明上述實施例的基礎上,所述生成模塊,具體用于:
[0136]對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內;
[0137]對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令;
[0138]所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
[0139]在本發(fā)明實施例中,提供了一種定時執(zhí)行命令序列的生成過程,即在每個第一周期開始的時候,根據該周期的時間范圍(起始時間,結束時間)為標準,判斷每個定時任務的觸發(fā)時間是否落入了該第一周期的時間范圍內,對落入的這些定時任務生成對應的執(zhí)行命令,未落入的則不生成。最后在根據觸發(fā)時間的先后順序形成序列,保證在執(zhí)行的時候先對觸發(fā)時間近的進行計算和判斷,保證每個執(zhí)行命令的準時觸發(fā)。
[0140]在本發(fā)明上述實施例的基礎上,更佳地,所述生成模塊,進一步具體包括:
[0141]在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令;
[0142]在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
[0143]在本發(fā)明上述實施例中,提供了一種更詳細的執(zhí)行命令的生成實施例。由于定時任務一般分為周期性任務和一次性任務,所以對于一次性任務來說,因為觸發(fā)時間只有一個,所以只要簡單的判斷這個觸發(fā)時間是否落入了范圍即可決定是否生成執(zhí)行命令,但是周期性任務具備多個觸發(fā)時間,所以需要判斷這些觸發(fā)時間哪些落入了范圍,這樣就可能會生成多個執(zhí)行命令。
[0144]在本發(fā)明上述實施例的基礎上,所述執(zhí)行模塊,具體用于:
[0145]在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器;
[0146]在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令;
[0147]將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除;
[0148]根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
[0149]在本發(fā)明實上述實施例中,提供了一種執(zhí)行命令序列的執(zhí)行方式,為了更好的達到降低系統(tǒng)壓力的效果,不采用【背景技術】中介紹的定時器周期性觸發(fā)系統(tǒng)遍歷定時任務序列的方式,而采用觸發(fā)器觸發(fā)系統(tǒng)對執(zhí)行命令序列的遍歷判斷和計算,在執(zhí)行命令序列開始實施后,對首個執(zhí)行命令,也就是觸發(fā)時間最近的執(zhí)行命令建立一個觸發(fā)器,在觸發(fā)器觸發(fā)時,系統(tǒng)開始遍歷執(zhí)行命令序列,對觸發(fā)時間與觸發(fā)器相等的執(zhí)行命令進行觸發(fā)。
[0150]可以理解的是,該裝置還包括判斷模塊,用于在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài);
[0151]如果是,則通知所述執(zhí)行模塊執(zhí)行所述執(zhí)行命令;
[0152]如果否,則不執(zhí)行所述執(zhí)行命令。
[0153]在本發(fā)明實施例中,還包括了一個判斷過程,就是在一個執(zhí)行命令已經滿足了觸發(fā)時間時,先判斷該任務是不是為可執(zhí)行狀態(tài),可執(zhí)行狀態(tài)的意思是,是不是被允許執(zhí)行或系統(tǒng)現在能不能完成該任務,如果執(zhí)行命令時不被允許執(zhí)行的,或系統(tǒng)現在沒有能力完成該任務,則即使已經到了觸發(fā)時間,該執(zhí)行命令也不會被觸發(fā)。
[0154]在本發(fā)明實施例的上述基礎上,優(yōu)選地,所述檢測模塊,具體用于:
[0155]在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務;
[0156]所述檢測任務檢測當前是否存在定時任務序列。
[0157]可以理解的是,每次根據定時任務序列生成執(zhí)行任務序列時,應該提前生成,以保證在每個第一周期開始的時候,執(zhí)行任務序列已經生成完畢,不會耽誤執(zhí)行命令的觸發(fā),上述的第一時刻可以根據需要設定,例如如果定時任務較多,則可以將第一時刻設定的離第一周期結束的時間長一些。
[0158]本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產品的形式。
[0159]本發(fā)明是參照根據本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數據處理設備的處理器以產生一個機器,使得通過計算機或其他可編程數據處理設備的處理器執(zhí)行的指令產生用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0160]這些計算機程序指令也可存儲在能引導計算機或其他可編程數據處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產生包括指令裝置的制造品,該指令裝置實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0161]這些計算機程序指令也可裝載到計算機或其他可編程數據處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產生計算機實現的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0162]顯然,本領域的技術人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權利要求及其等同技術的范圍之內,則本發(fā)明也意圖包含這些改動和變型在內。
【權利要求】
1.一種定時任務的處理方法,其特征在于,該方法包括: 在預設的每一第一周期結束前,檢測當前是否存在定時任務序列; 如果是,則根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列; 在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
2.如權利要求1所述的方法,其特征在于,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的定時執(zhí)行命令序列,具體包括: 對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內; 對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令; 所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
3.如權利要求2所述的方法,其特征在于,對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令,具體包括: 在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令; 在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
4.如權利要求3所述的方法,其特征在于,在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列,具體包括: 在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器; 在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令; 將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除; 根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
5.如權利要求4所述的方法,其特征在于,在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài); 如果是,則執(zhí)行所述執(zhí)行命令; 如果否,則不執(zhí)行所述執(zhí)行命令。
6.如權利要求5所述的方法,其特征在于,在預設的每一第一周期結束前,檢測當前是否存在定時任務序列,具體包括: 在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務; 所述檢測任務檢測當前是否存在定時任務序列。
7.一種定時任務的處理裝置,其特征在于,該裝置包括: 檢測模塊,用于在預設的每一第一周期結束前,檢測當前是否存在定時任務序列; 生成模塊,用于在所述檢測模塊的檢測結果為是時,根據所述定時任務序列生成任務執(zhí)行時間在下一個第一周期內的執(zhí)行命令序列; 執(zhí)行模塊,用于在下一第一周期開始時,立即執(zhí)行所述執(zhí)行命令序列。
8.如權利要求7所述的裝置,其特征在于,所述生成模塊,具體用于: 對所述定時任務序列中所有定時任務依次判斷是否落入下一個第一周期的時間范圍內; 對落入所述下一個第一周期的時間范圍內的每一定時任務生成對應的執(zhí)行命令; 所有的執(zhí)行命令根據觸發(fā)時間的先后順序形成定時執(zhí)行命令序列。
9.如權利要求8所述的裝置,其特征在于,所述生成模塊,進一步具體包括: 在所述定時任務為第二周期性任務時,只對觸發(fā)時間落入所述下一個第一周期的時間范圍內的時間點生成對應的執(zhí)行命令; 在所述定時任務為一次性任務時,根據所述一次性任務的觸發(fā)時間生成對應的執(zhí)行命令。
10.如權利要求9所述的裝置,其特征在于,所述執(zhí)行模塊,具體用于: 在下一第一周期開始時,根據所述執(zhí)行命令序列的首個執(zhí)行命令的觸發(fā)時間生成第一觸發(fā)器; 在所述第一觸發(fā)器觸發(fā)時,遍歷所述執(zhí)行命令序列,依次觸發(fā)與所述第一觸發(fā)器觸發(fā)時間相等的所有執(zhí)行命令; 將已經觸發(fā)的執(zhí)行命令從所述執(zhí)行命令序列中刪除;` 根據刪除后的執(zhí)行命令序列中的當前位于首位執(zhí)行命令的出發(fā)時間生成第二觸發(fā)器,如此循環(huán)直至所述執(zhí)行命令序列中的執(zhí)行命令為空。
11.如權利要求10所述的裝置,其特征在于,該裝置還包括判斷模塊,用于在觸發(fā)所述執(zhí)行命令前,判斷該執(zhí)行命令當前是否為可執(zhí)行狀態(tài); 如果是,則通知所述執(zhí)行模塊執(zhí)行所述執(zhí)行命令; 如果否,則不執(zhí)行所述執(zhí)行命令。
12.如權利要求11所述的裝置,其特征在于,所述檢測模塊,具體用于: 在距離預設的每一第一周期結束前的第一時刻時,執(zhí)行檢測任務; 所述檢測任務檢測當前是否存在定時任務序列。
【文檔編號】G06F9/48GK103530179SQ201310460458
【公開日】2014年1月22日 申請日期:2013年9月30日 優(yōu)先權日:2013年9月30日
【發(fā)明者】趙保衛(wèi) 申請人:大唐移動通信設備有限公司