-35秒)% 60秒=5秒,该余数5秒小于调度周期310即10秒,因此,该任务A在时刻311触发的调度处理操作里被作为待执行任务输出至任务池。同理,在之后的第50秒、第60秒、第70秒、第80秒、第90秒等为调度时间触发的调度处理操作中,调度时间对应的时刻与任务A的最近启用时间321的差除以任务执行周期320得到的余数分别为15秒、25秒、35秒、45秒、55秒等,均大于调度周期310即10秒,该任务A不会被输出至任务池。直到时刻312 (即第100秒)为调度时间触发的调度处理操作中,(100秒-35秒)% 60秒=5秒,小于10秒,该任务A再次被作为待执行任务输出至任务池。同样,在任务A没有被用户A停止或修改的情况下,在时刻313、时刻314等,该任务A都会被再次调度。
[0067]相似地,对于在任务A启用之前的时刻331 (在第20秒与第30秒之间)被用户B启用的任务B,假设任务B的任务执行间隔330为2分钟,则任务B在第30秒、第150秒、第270秒(未示出)等等为调度时间触发的调度处理操作中被作为待执行任务输出至任务池。
[0068]对于大量的任务,如任务A、任务B、任务C、任务D等等,电子设备可以在每个任务被启用后,每隔一个该任务的任务执行间隔将其作为待执行任务输出至任务池。
[0069]本领域技术人员可以理解的是,即使任务在与某个调度时间相同的时刻被启用,此时预设条件中的余数为O秒,小于调度周期10秒,而由于调度处理操作被触发后执行的滞后性,该任务仍然会在该调度时间触发的调度处理操作中被输出。而在下一个调度时间,由于预设条件中的余数为10秒,不小于调度周期10秒,从而任务不会再次被输出。如图4所示,该预设条件可以实现:任务在其最近启用时间(如时刻421)后的每一个任务执行周期(如任务执行周期420)中的一个调度周期(如一个调度周期410)的时间内被调度,而且在其同一个任务执行周期内不会被重复调度。
[0070]在另一些实施例中,预设条件也可以是基于当前的调度时间和任务的拟调度时间的判断条件。其中,上述拟调度时间由任务的最近启用时间加上整数个任务执行周期获得。预设条件可以包括:待调度任务的拟调度时间迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间。以下仍结合图3的时间参数与调度时间的关系示意300,对该预设条件进行详细说明。
[0071]作为另一个示例,如图3所示,调度周期310为10秒,在以秒为单位的时间轴上,有多个调度时间(如第10秒、第20秒、第30秒等等)。在时刻321 (例如是第35秒),一个任务A被用户A启用,成为待调度任务。时刻321为该待调度任务A的最近启用时间。该待调度任务A的任务执行间隔320例如为I分钟(60秒)。该调度任务A的拟调度时间可以包括时刻321 (如第35秒)、时刻322 (第35秒+1 X 60秒=95秒)、时刻323 (第35秒+2X60秒=155秒)、时刻324(第35秒+3X60秒=215秒)等等。待调度任务A被启用后,在时刻311为调度时间的调度处理操作中,电子设备判断该调度任务A的拟调度时间即时刻321 (第35秒)落入迟于上一次调度处理操作的调度时间(第30秒)且早于或等于时刻311(第40秒)的时间区间内。此时,该调度任务A被作为待执行任务输出值任务池。同理,在第50秒、第60秒、第70秒、第80秒、第90秒等为调度时间的调度处理操作中,电子设备判断该调度任务A的拟调度时间即时刻322 (第95秒)不会落入迟于上一次调度处理操作的调度时间且早于或等于当前调度处理操作的调度时间的时间区间内,该待调度任务A不会被作为待执行任务输出至任务池。直到在时刻312 (第100秒)为调度时间的调度处理操作中,该待调度任务A的拟调度时间(时刻322)落入迟于第90秒且早于或等于第100秒的时间区间内,该待调度任务A被作为待执行任务输出至任务池。同样,在任务A没有被用户A停止或修改的情况下,在时刻313、时刻314等为调度时间的调度处理操作中,该待调度任务A被作为待执行任务输出至任务池。
[0072]相似地,对于在任务A启动之前的时刻331 (在第20秒与第30秒之间)被用户B启动的任务B,假设任务B的任务执行间隔330为2分钟,则任务B在第30秒、第150秒、第270秒(未示出)等等为调度时间触发的调度处理操作中被作为待执行任务输出至任务池。
[0073]对于大量的任务,如任务A、任务B、任务C、任务D等等,电子设备可以在每个任务被启用后,每隔一个该任务的任务执行间隔将其作为待执行任务输出至任务池。
[0074]本领域技术人员同样可以理解的是,即使任务在与某个调度时间相同的时刻被启用,由于调度处理操作被触发后执行的滞后性,电子设备会判断该任务的拟调度时间(启用时间)等于当前调度处理操作的调度时间。该任务会在该调度时间触发的调度处理操作中被输出。而在下一个调度时间,由于该任务的拟调度时间(启用时间)不迟于前一次调度处理操作的调度时间,从而任务不会再次被输出。如图4所示,该预设条件可以实现:任务在其最近启用时间(如时刻421)后的每一个任务执行周期(如任务执行周期420)中的一个调度周期(如一个调度周期410)的时间内被调度,而且在其同一个任务执行周期内不会被重复调度。
[0075]可以理解,对于非周期性任务,假设任务执行周期为无穷大,上述的预设条件同样适用。
[0076]步骤103,分配并执行任务池中的任务。
[0077]在本实施例中,电子设备可以将任务池中的任务分配给其上的执行进程来执行,也可以将任务池中的任务分配给与其连接的执行设备来执行。
[0078]当电子设备是用于调度并执行所启用的任务的远程服务器时,该远程服务器可以是一台服务器,也可以是通过无线连接方式或者有线连接方式相连的多台服务器。其中,上述无线连接方式包括但不限于3G/4G连接、WiFi连接、蓝牙连接、WiMAX连接、Zigbee连接、UffB (ultra wideband)连接、以及其他现在已知或将来开发的无线连接方式。可选地,上述多台服务器可以包括一台调度服务器和至少一台执行服务器。其中,调度服务器可以根据调度周期周期性地触发并执行调度处理操作,输出符合上述预设条件的待调度任务至任务池,之后将任务池中的任务分配给执行服务器。执行服务器在不执行任务时进行等待,当任务池中有任务时,领取任务并执行。可选地,在C++程序中,电子设备可以通过以下的语句实现任务的领取及执行:
[0079]Task = GetTaskO ;//无任务时等待,有任务时获得任务、返回
[0080]RunTask (task) ;// 执行任务
[0081]其中,GetTaskO是用于从任务池中获取任务的函数,可以在无任务时等待,有任务时获取任务,RunTask(task)是对任务task的执行函数。电子设备可以在C++程序中通过一个死循环实现对任务的获取和执行。
[0082]对于本实施例而言,应用的场景可以为,远程服务器上的任务调度平台根据调度周期周期性地触发调度处理操作;远程服务器在接收到不同用户在不同电子终端(例如计算机、智能手机等等)启用的不同任务,分别获取这些任务的时间参数,并在调度处理操作中按照对应任务执行周期周期性地将符合预设条件的任务输出至任务池后进行分配并执行。对于启用任务的电子终端而言,其可以周期性地获取任务执行的结果,或者在任务执行的结果满足一定条件是接收预警信息。例如电子终端启用的任务是上述的资源监控任务,远程服务器可以在每次执行完该任务时将电子终端的内存和/或磁盘的占用情况反馈至电子终端,也可以在电子终端的内存和/或磁盘的占用超过预设的百分比时向电子终端发送提醒信息。本申请的上述实施例有助于提高任务调度的效率。
[0083]应当注意,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。相反,流程图中描绘的步骤可以改变执行顺序。例如,在图1的流程100中,步骤102和步骤103也可以同时并列执行。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个