處理操作是首次調(diào)度處理操作時,scheduleTime = now O ;其中,now O為系統(tǒng)獲取當(dāng)前時間的函數(shù);該語句表示,電子設(shè)備首次觸發(fā)調(diào)度處理操作時,將當(dāng)前時間作為首次觸發(fā)調(diào)度處理操作時間,即首次觸發(fā)的調(diào)度處理操作的調(diào)度時間;
[0039]設(shè)置調(diào)度周期為5 秒,schedulelnterval = 5 ;
[0040]當(dāng)電子設(shè)備不是首次觸發(fā)調(diào)度處理操作時,scheduleTime =scheduleTime+schedule Interval ;該語句表示,電子設(shè)備可以在觸發(fā)一次調(diào)度處理操作的執(zhí)行后,將該次調(diào)度處理操作的調(diào)度時間加上一個調(diào)度周期(schedulelnterval)即5秒的時間作為下一個調(diào)度時間,并在時間達(dá)到下一個調(diào)度時間時,觸發(fā)下一次調(diào)度處理操作。
[0041]觸發(fā)調(diào)度處理操作是對任務(wù)進(jìn)行調(diào)度處理的操作,其在C++語言中可以通過一個調(diào)度處理進(jìn)程來實現(xiàn)。比如觸發(fā)一個調(diào)度處理進(jìn)程可以是:
[0042]new ScheduleProcess (scheduleTime, schedulelnterval).start ();
[0043]其中,new ScheduleProcess是觸發(fā)一個新的調(diào)度處理進(jìn)程的函數(shù),該函數(shù)與調(diào)度周期和調(diào)度時間有關(guān)。之后,電子設(shè)備可以通過sleep函數(shù)(休眠函數(shù))休眠一個調(diào)度周期(schedulelnterval),如:sleep (schedulelnterval)。
[0044]然后,電子設(shè)備可以根據(jù)計算的調(diào)度時間觸發(fā)下一個調(diào)度處理進(jìn)程。電子設(shè)備在滿足每個調(diào)度時間時觸發(fā)一個對應(yīng)的新的調(diào)度處理進(jìn)程可以實現(xiàn)為:
[0045]While(True) {
[0046]new ScheduleProcess (scheduleTime, schedulelnterval).start ();
[0047]sleep(schedulelnterval);
[0048]scheduleTime = scheduleTime+scheduleInterval ;
[0049]}
[0050]這樣,通過一個死循環(huán),每隔一個調(diào)度周期的時間,電子設(shè)備得到一個新的調(diào)度時間,每對應(yīng)一個調(diào)度時間,電子設(shè)備觸發(fā)一個新的調(diào)度處理進(jìn)程。
[0051]步驟102,通過執(zhí)行調(diào)度處理操作輸出符合預(yù)設(shè)條件的待調(diào)度任務(wù)至任務(wù)池。
[0052]在本實施例中,電子設(shè)備通過執(zhí)行調(diào)度處理操作可以輸出符合預(yù)設(shè)條件的待調(diào)度任務(wù)至任務(wù)池作為待執(zhí)行任務(wù)以供分配及執(zhí)行。其中,本實施例中的調(diào)度處理操作的流程如圖2所示。圖2中示出的調(diào)度處理操作的流程102包括:
[0053]步驟1021,獲取當(dāng)前調(diào)度處理操作的調(diào)度時間。
[0054]在本實施例的調(diào)度處理操作中,電子設(shè)備首先可以獲取步驟101中得到的觸發(fā)當(dāng)前調(diào)度處理操作的調(diào)度時間,也可以在本步驟中計算當(dāng)前調(diào)度處理操作的調(diào)度時間。其中,當(dāng)調(diào)度處理操作是首次調(diào)度處理操作時,電子設(shè)備可以獲取調(diào)度處理操作被觸發(fā)的當(dāng)前時間作為當(dāng)前調(diào)度處理操作的調(diào)度時間,當(dāng)調(diào)度處理操作不是首次調(diào)度處理操作時,電子設(shè)備可以將前一個調(diào)度時間加上一個調(diào)度周期的時間為當(dāng)前調(diào)度處理操作的調(diào)度時間。當(dāng)電子設(shè)備在本步驟中計算當(dāng)前調(diào)度處理操作的調(diào)度時間時,可以使用如步驟101中描述的計算方法。
[0055]步驟1022,獲取每個待調(diào)度任務(wù)的時間參數(shù)。
[0056]在本實施例的調(diào)度處理操作中,電子設(shè)備接著可以獲取每個待調(diào)度任務(wù)的時間參數(shù)。其中,上述時間參數(shù)是對應(yīng)待調(diào)度任務(wù)的、與時間相關(guān)聯(lián)的參數(shù),在本實施例中可以包括待調(diào)度任務(wù)的最近啟用時間和任務(wù)執(zhí)行周期。
[0057]其中,待調(diào)度任務(wù)可以包括系統(tǒng)中所有已經(jīng)啟用的任務(wù),也可以僅包括所有已經(jīng)啟用的任務(wù)中沒有被調(diào)度過或某次調(diào)度后需要下次調(diào)度的任務(wù),本申請對此不做限定??蛇x地,任務(wù)的啟用時間可以是任務(wù)被創(chuàng)建后首次啟用的時間,也可以是任務(wù)啟用后被用戶暫停進(jìn)行修改后重新啟用的時間。在本實施例中,待調(diào)度任務(wù)的最近啟用時間,可以表示任務(wù)最后一次被啟用的時間。實踐中,這些任務(wù)可以是周期性的任務(wù),也可以是非周期性的任務(wù)。當(dāng)任務(wù)是非周期性任務(wù)時,經(jīng)過一次調(diào)度執(zhí)行即結(jié)束。當(dāng)任務(wù)是周期性任務(wù)時,每隔一個任務(wù)執(zhí)行周期需要被調(diào)度執(zhí)行一次。這里的任務(wù)執(zhí)行周期可以是任務(wù)相鄰兩次執(zhí)行開始時間之間的間隔。
[0058]舉例而言,用戶在電子終端(例如計算機(jī)、智能手機(jī)等等)上啟用一個資源監(jiān)控的任務(wù),以每分鐘檢測一次電子終端的內(nèi)存和/或磁盤的占用情況,則該任務(wù)屬于周期性任務(wù),其任務(wù)執(zhí)行周期為I分鐘。當(dāng)用戶啟用該任務(wù)后,該任務(wù)的最近啟用時間可以是用戶啟用該任務(wù)的時間。如果在上述資源監(jiān)控任務(wù)運(yùn)行過程中,用戶將任務(wù)暫停,并修改為每兩分鐘檢測一次電子終端的內(nèi)存和/或磁盤的占用情況之后再次啟用該任務(wù),則任務(wù)的執(zhí)行周期修改為2分鐘,最近啟用時間可以為上述再次啟用該任務(wù)的時間。任務(wù)被啟用后就可以作為待調(diào)度任務(wù)。
[0059]在本實施例的一些實現(xiàn)方式中,任務(wù)執(zhí)行周期與調(diào)度周期滿足以下關(guān)系:所有待調(diào)度任務(wù)的任務(wù)執(zhí)行周期是調(diào)度周期的整數(shù)倍。例如,在上述資源監(jiān)控任務(wù)中,每個資源監(jiān)控任務(wù)的任務(wù)執(zhí)行周期都是以分鐘為最小單位,則調(diào)度周期可以是任意能被分鐘整除的時間段,例如可以是I秒、2秒、3秒、4秒、5秒、6秒、10秒、12秒、15秒、20秒、30秒、60秒等。
[0060]值得說明的是,執(zhí)行調(diào)度處理操作的電子設(shè)備可以是用戶完成任務(wù)啟用操作的上述電子終端,此時,電子設(shè)備可以執(zhí)行其上的任務(wù)調(diào)度操作以調(diào)度在其上啟用的任務(wù)。執(zhí)行調(diào)度處理操作的電子設(shè)備也可以是用于調(diào)度并執(zhí)行所啟用的任務(wù)的遠(yuǎn)程服務(wù)器(例如,對上述電子終端上的包括資源監(jiān)控任務(wù)的應(yīng)用提供支持的后臺服務(wù)器),此時,該電子設(shè)備可以通過有線連接方式或者無線連接方式從上述電子終端獲取這些任務(wù)及時間參數(shù)。上述無線連接方式包括但不限于3G/4G連接、WiFi連接、藍(lán)牙連接、WiMAX連接、Zigbee連接、UffB (ultra wideband)連接、以及其他現(xiàn)在已知或?qū)黹_發(fā)的無線連接方式。
[0061]步驟1023,輸出時間參數(shù)與調(diào)度時間滿足預(yù)設(shè)條件的待調(diào)度任務(wù)至任務(wù)池。
[0062]在本實施例中,電子設(shè)備可以將步驟1022中獲取的任務(wù)的時間參數(shù)與步驟1021獲取的調(diào)度時間之間滿足預(yù)設(shè)條件的待調(diào)度任務(wù)作為待執(zhí)行任務(wù)輸出至任務(wù)池。其中,上述任務(wù)池可以是對待執(zhí)行任務(wù)進(jìn)行緩存的組件,任務(wù)調(diào)度開始時,任務(wù)池被創(chuàng)建,任務(wù)調(diào)度結(jié)束時,任務(wù)池被清除。在這里,預(yù)設(shè)條件可以是預(yù)設(shè)的用于判斷任務(wù)是否為待執(zhí)行任務(wù)的條件。電子設(shè)備通過預(yù)設(shè)條件可以確保任務(wù)在一個調(diào)度周期內(nèi)被實時地調(diào)度。
[0063]在一些實施例中,預(yù)設(shè)條件可以是基于待調(diào)度任務(wù)的最近啟用時間和調(diào)度周期的判斷條件,例如預(yù)設(shè)條件可以包括:調(diào)度時間與最近啟用時間的差除以任務(wù)執(zhí)行周期得到的余數(shù)小于調(diào)度周期。該預(yù)設(shè)條件用公式表示如下:
[0064](scheduleTime - modifyTime) % runlntervaKscheduleInterval ;
[0065]其中,scheduleTime為當(dāng)前調(diào)度操作的調(diào)度時間,modifyTime為任務(wù)的最近啟用時間,runlnterval為任務(wù)執(zhí)行周期,schedulelnterval為調(diào)度周期。以下結(jié)合圖3的時間參數(shù)與調(diào)度時間的關(guān)系示意300,對該預(yù)設(shè)條件進(jìn)行詳細(xì)說明。
[0066]作為一個示例,如圖3所示,假設(shè)調(diào)度周期310為10秒,在以秒為單位的時間軸上,有多個調(diào)度時間(如第10秒、第20秒、第30秒等等),在每個調(diào)度時間上,電子設(shè)備觸發(fā)一次調(diào)度處理操作。在時刻321 (例如是第35秒),一個任務(wù)A被一個用戶A啟用,成為待調(diào)度任務(wù),則時刻321為該待調(diào)度任務(wù)A的最近啟用時間。在圖3的示例中,該待調(diào)度任務(wù)的任務(wù)執(zhí)行間隔320為I分鐘(60秒)。則在時刻321該任務(wù)A被啟用后,到達(dá)第一個調(diào)度時間,即時刻311時,一個調(diào)度處理操作被觸發(fā)。此時,當(dāng)前調(diào)度處理操作的調(diào)度時間對應(yīng)的時刻311與任務(wù)A的最近啟用時間321的差除以任務(wù)執(zhí)行周期320得到的余數(shù)為(40秒