[发明专利]阻塞任务调度方法及装置有效
申请号: | 201310631829.7 | 申请日: | 2013-11-29 |
公开(公告)号: | CN104142858A | 公开(公告)日: | 2014-11-12 |
发明(设计)人: | 许家滔;陈国敏;李方源 | 申请(专利权)人: | 腾讯科技(深圳)有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 广州华进联合专利商标代理有限公司 44224 | 代理人: | 何平;邓云鹏 |
地址: | 518000 广东省深圳*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 阻塞 任务 调度 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,特别是涉及一种阻塞任务调度方法及装置。
背景技术
现有的计算机技术中的应用程序框架在执行需要I/O(input/output)的任务时,通常会由于等待输入数据而进入暂停状态。例如,调用socket函数监听端口等待接收远程服务器发送来的数据时,或是监听系统输入事件对应的input流时,均会进入暂停状态,从而使得程序进程无法继续执行。
现有的应用程序框架为了防止程序由于等待I/O而进入暂停状态,通常为以线程为单位执行阻塞任务,即,以多线程的方式执行程序,当某个线程由于执行I/O任务而阻塞时,可在操作系统的调度下切换到其他线程异步执行。
然而,由于操作系统创建和管理线程的开销较大,应用程序框架在业务较繁忙,创建的线程较多时,操作系统的上下文切换的次数会呈几何指数上升,而由于系统性能的限制,使得系统I/O的并发数量下降。
发明内容
基于此,有必要提供一种能够提高系统I/O的并发数量的阻塞任务调度方法。
一种阻塞任务调度方法,包括:
为任务函数分配协程,在所述协程中调用所述任务函数;
在调用所述任务函数发生阻塞时将该协程暂停运行,并将该协程设置为暂停状态;
监听系统I/O事件,查找与所述系统I/O事件对应的协程,并将该协程设置为运行状态;
查找出为运行状态的协程,恢复所述查找到的协程,并对所述系统I/O事件进行相应的处理。
此外,还提供了一种能够提高系统I/O的并发数量的阻塞任务调度装置。
一种阻塞任务调度装置,包括:
协程分配模块,用于为任务函数分配协程,在所述协程中调用所述任务函数;
协程暂停运行模块,用于在调用所述任务函数发生阻塞时将该协程暂停运行,并将该协程设置为暂停状态;
状态更新模块,用于监听系统I/O事件,查找与所述系统I/O事件对应的协程,并将该协程设置为运行状态;
协程恢复模块,查找出为运行状态的协程,恢复所述查找到的协程,并对所述系统I/O事件进行相应的处理。
上述阻塞任务调度方法及装置中,以协程作为任务函数的载体运行,在任务函数发生阻塞时,将其对应的协程暂停运行从而切换到其他为暂停运行的协程上继续异步执行;在暂停运行的协程有相应的系统I/O事件触发时,则结束该协程的暂停状态将其恢复,并将该系统I/O事件分配给该协程处理。与传统技术中以线程或进程为载体运行任务函数的方式相比,创建和调度协程比创建和调度线程或进程需要较少的内存资源,因此,在相同的系统资源限制下,可创建较多的协程来处理并发的系统I/O任务,从而提高了系统I/O的并发数量。
同时,对于开发者而言,上述阻塞任务调度方法及装置的改动仅局限在现有的应用框架中对应用层接口函数的底层实现方式上,即将调用应用层接口函数执行任务函数的载体设置为协程,使得基于应用层框架的业务逻辑代码并不需要修改,开发者只需在现有的应用层框架的底层修改代码即可实现上述阻塞任务调度方法及装置,从而降低了在现有系统上开发和维护的复杂度。
附图说明
图1为一个实施例中阻塞任务调度方法的流程图;
图2为一个实施例中阻塞任务调度装置的结构示意图;
图3为另一个实施例中阻塞任务调度装置的结构示意图;
图4为一个实施例中阻塞任务调度装置的硬件环境图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
在一个实施例中,如图1所示,一种阻塞任务调度装置方法,该方法完全依赖于计算机程序,该计算机程序可运行于基于冯洛伊曼体系的计算机系统上,该方法包括:
该方法包括:
步骤S102,为任务函数分配协程,在协程中调用任务函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(深圳)有限公司,未经腾讯科技(深圳)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310631829.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:服务器资源的配置处理方法与装置
- 下一篇:用户可创建的定制工作流程