任务调度的方法和装置的制造方法_2

文档序号:8512495阅读:来源:国知局
处理操作是首次调度处理操作时,scheduleTime = now O ;其中,now O为系统获取当前时间的函数;该语句表示,电子设备首次触发调度处理操作时,将当前时间作为首次触发调度处理操作时间,即首次触发的调度处理操作的调度时间;
[0039]设置调度周期为5 秒,schedulelnterval = 5 ;
[0040]当电子设备不是首次触发调度处理操作时,scheduleTime =scheduleTime+schedule Interval ;该语句表示,电子设备可以在触发一次调度处理操作的执行后,将该次调度处理操作的调度时间加上一个调度周期(schedulelnterval)即5秒的时间作为下一个调度时间,并在时间达到下一个调度时间时,触发下一次调度处理操作。
[0041]触发调度处理操作是对任务进行调度处理的操作,其在C++语言中可以通过一个调度处理进程来实现。比如触发一个调度处理进程可以是:
[0042]new ScheduleProcess (scheduleTime, schedulelnterval).start ();
[0043]其中,new ScheduleProcess是触发一个新的调度处理进程的函数,该函数与调度周期和调度时间有关。之后,电子设备可以通过sleep函数(休眠函数)休眠一个调度周期(schedulelnterval),如:sleep (schedulelnterval)。
[0044]然后,电子设备可以根据计算的调度时间触发下一个调度处理进程。电子设备在满足每个调度时间时触发一个对应的新的调度处理进程可以实现为:
[0045]While(True) {
[0046]new ScheduleProcess (scheduleTime, schedulelnterval).start ();
[0047]sleep(schedulelnterval);
[0048]scheduleTime = scheduleTime+scheduleInterval ;
[0049]}
[0050]这样,通过一个死循环,每隔一个调度周期的时间,电子设备得到一个新的调度时间,每对应一个调度时间,电子设备触发一个新的调度处理进程。
[0051]步骤102,通过执行调度处理操作输出符合预设条件的待调度任务至任务池。
[0052]在本实施例中,电子设备通过执行调度处理操作可以输出符合预设条件的待调度任务至任务池作为待执行任务以供分配及执行。其中,本实施例中的调度处理操作的流程如图2所示。图2中示出的调度处理操作的流程102包括:
[0053]步骤1021,获取当前调度处理操作的调度时间。
[0054]在本实施例的调度处理操作中,电子设备首先可以获取步骤101中得到的触发当前调度处理操作的调度时间,也可以在本步骤中计算当前调度处理操作的调度时间。其中,当调度处理操作是首次调度处理操作时,电子设备可以获取调度处理操作被触发的当前时间作为当前调度处理操作的调度时间,当调度处理操作不是首次调度处理操作时,电子设备可以将前一个调度时间加上一个调度周期的时间为当前调度处理操作的调度时间。当电子设备在本步骤中计算当前调度处理操作的调度时间时,可以使用如步骤101中描述的计算方法。
[0055]步骤1022,获取每个待调度任务的时间参数。
[0056]在本实施例的调度处理操作中,电子设备接着可以获取每个待调度任务的时间参数。其中,上述时间参数是对应待调度任务的、与时间相关联的参数,在本实施例中可以包括待调度任务的最近启用时间和任务执行周期。
[0057]其中,待调度任务可以包括系统中所有已经启用的任务,也可以仅包括所有已经启用的任务中没有被调度过或某次调度后需要下次调度的任务,本申请对此不做限定。可选地,任务的启用时间可以是任务被创建后首次启用的时间,也可以是任务启用后被用户暂停进行修改后重新启用的时间。在本实施例中,待调度任务的最近启用时间,可以表示任务最后一次被启用的时间。实践中,这些任务可以是周期性的任务,也可以是非周期性的任务。当任务是非周期性任务时,经过一次调度执行即结束。当任务是周期性任务时,每隔一个任务执行周期需要被调度执行一次。这里的任务执行周期可以是任务相邻两次执行开始时间之间的间隔。
[0058]举例而言,用户在电子终端(例如计算机、智能手机等等)上启用一个资源监控的任务,以每分钟检测一次电子终端的内存和/或磁盘的占用情况,则该任务属于周期性任务,其任务执行周期为I分钟。当用户启用该任务后,该任务的最近启用时间可以是用户启用该任务的时间。如果在上述资源监控任务运行过程中,用户将任务暂停,并修改为每两分钟检测一次电子终端的内存和/或磁盘的占用情况之后再次启用该任务,则任务的执行周期修改为2分钟,最近启用时间可以为上述再次启用该任务的时间。任务被启用后就可以作为待调度任务。
[0059]在本实施例的一些实现方式中,任务执行周期与调度周期满足以下关系:所有待调度任务的任务执行周期是调度周期的整数倍。例如,在上述资源监控任务中,每个资源监控任务的任务执行周期都是以分钟为最小单位,则调度周期可以是任意能被分钟整除的时间段,例如可以是I秒、2秒、3秒、4秒、5秒、6秒、10秒、12秒、15秒、20秒、30秒、60秒等。
[0060]值得说明的是,执行调度处理操作的电子设备可以是用户完成任务启用操作的上述电子终端,此时,电子设备可以执行其上的任务调度操作以调度在其上启用的任务。执行调度处理操作的电子设备也可以是用于调度并执行所启用的任务的远程服务器(例如,对上述电子终端上的包括资源监控任务的应用提供支持的后台服务器),此时,该电子设备可以通过有线连接方式或者无线连接方式从上述电子终端获取这些任务及时间参数。上述无线连接方式包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UffB (ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。
[0061]步骤1023,输出时间参数与调度时间满足预设条件的待调度任务至任务池。
[0062]在本实施例中,电子设备可以将步骤1022中获取的任务的时间参数与步骤1021获取的调度时间之间满足预设条件的待调度任务作为待执行任务输出至任务池。其中,上述任务池可以是对待执行任务进行缓存的组件,任务调度开始时,任务池被创建,任务调度结束时,任务池被清除。在这里,预设条件可以是预设的用于判断任务是否为待执行任务的条件。电子设备通过预设条件可以确保任务在一个调度周期内被实时地调度。
[0063]在一些实施例中,预设条件可以是基于待调度任务的最近启用时间和调度周期的判断条件,例如预设条件可以包括:调度时间与最近启用时间的差除以任务执行周期得到的余数小于调度周期。该预设条件用公式表示如下:
[0064](scheduleTime - modifyTime) % runlntervaKscheduleInterval ;
[0065]其中,scheduleTime为当前调度操作的调度时间,modifyTime为任务的最近启用时间,runlnterval为任务执行周期,schedulelnterval为调度周期。以下结合图3的时间参数与调度时间的关系示意300,对该预设条件进行详细说明。
[0066]作为一个示例,如图3所示,假设调度周期310为10秒,在以秒为单位的时间轴上,有多个调度时间(如第10秒、第20秒、第30秒等等),在每个调度时间上,电子设备触发一次调度处理操作。在时刻321 (例如是第35秒),一个任务A被一个用户A启用,成为待调度任务,则时刻321为该待调度任务A的最近启用时间。在图3的示例中,该待调度任务的任务执行间隔320为I分钟(60秒)。则在时刻321该任务A被启用后,到达第一个调度时间,即时刻311时,一个调度处理操作被触发。此时,当前调度处理操作的调度时间对应的时刻311与任务A的最近启用时间321的差除以任务执行周期320得到的余数为(40秒
当前第2页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1