[发明专利]任务队列的处理方法和装置以及存储介质在审
申请号: | 201811278402.2 | 申请日: | 2018-10-30 |
公开(公告)号: | CN111124625A | 公开(公告)日: | 2020-05-08 |
发明(设计)人: | 王彭;朱才峰 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 北京市惠诚律师事务所 11353 | 代理人: | 杨娟;杨雪婷 |
地址: | 英属开曼群岛大开*** | 国省代码: | 暂无信息 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 任务 队列 处理 方法 装置 以及 存储 介质 | ||
本申请提供了任务队列的处理方法和装置以及非瞬时性计算机可读存储介质。该任务队列的处理方法包括:任务的生产方向任务队列中添加任务,并且在任务状态位图中记录所述生产方向所述任务队列添加任务的操作;任务的处理方从所述任务队列取出任务进行处理,并且在所述任务状态位图中记录所述处理方从所述任务队列取出任务的操作;所述处理方完成对任务的处理,并且在所述任务状态位图中记录所述处理方完成对任务的处理的操作。
技术领域
本申请涉及计算机技术领域,尤其涉及任务队列的处理方法和装置以及非瞬时性计算机可读存储介质。
背景技术
在计算机系统中,经常会用到多线程或者多进程编程,多线程和多进程编程过程中一个很重要的模式就是任务队列。任务队列是一种数据结构,该数据结构一般具有一个或者若干个任务的生产方(即,任务的生产者)和任务的处理方(即,任务的消费者),生产方会向任务队列中添加任务,处理方从任务队列中获取任务,在任务完成后,处理方可通过相关接口通知生产方该任务已经完成。
例如,系统中的一个功能的完成会需要若干任务,而多个任务一般很难在一个线程或者一个进程中完成,多个线程或多个进程之间往往需要通过任务队列来通信。上游线程或进程(生产方)在需要的时候向任务队列中添加一个任务,下游线程或进程(处理方)不断从任务队列中获取任务。在任务完成后,任务的处理方可通过特定接口通知任务的生产方该任务已完成。可见,如何实现任务队列并适当地对其进行处理显得尤为重要。
数据平面开发套件(DPDK:Data Plane Development Kit)是用于快速数据包处理的函数库与驱动集合的套件,其可提高数据处理性能和吞吐量,并提高数据平面应用程序的工作效率。DPDK中的ring是基于循环队列的实现,它提供了对任务队列的管理,并且具有两组变量head/tail变量,其中prod_head和prod_tail表示任务的生产方的状态,cons_head和cons_tail表示任务的处理方的状态。
图1示出了DPDK中的ring所实现的任务队列的示例。如图1所示,在向任务队列中添加一个任务对象时,首先把prod_head向前移动,然后将任务对象添加到prod_head之前指向的位置,最后将prod_tail向前移动。在消费一个任务对象(即,处理该任务)时,首先把cons_head向前移动,然后获取之前cons_head指向的任务对象,最后将cons_tail向前移动。prod_tail和cons_tail之间的任务对象,就是在ring中待消费的任务对象。如果有多个线程或进程同时操作该任务队列,一般系统会通过锁或者原子指令来保证线程或进程安全。
由于现代计算机系统具有复杂的存储层次(memory hierarchy)结构,因此例如图1中的一个prod_head向前移动操作(prod_head=prod_head+1)其实由多条指令完成。同时,由于ring中变量较多,所以很难做到在任一时间点重置该任务队列都不丢任务。而且多个线程或进程同时操作ring时,ring的状态会很多。如果在任务的一个生产方向任务队列中添加任务时,需要对该生产方进行热升级(即,杀掉该生产方并重新拉起),那么该生产方的重启可能发生在向任务队列中添加任务的任意时刻,由于ring的状态很多,所以很难对该生产方做热升级。
发明内容
本申请提供了任务队列的处理方法和装置以及非瞬时性计算机可读存储介质。
根据本申请的第一方面,提供了一种任务队列的处理方法,包括:
任务的生产方向任务队列中添加任务,并且在任务状态位图中记录所述生产方向所述任务队列添加任务的操作;
任务的处理方从所述任务队列取出任务进行处理,并且在所述任务状态位图中记录所述处理方从所述任务队列取出任务的操作;
所述处理方完成对任务的处理,并且在所述任务状态位图中记录所述处理方完成对任务的处理的操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811278402.2/2.html,转载请声明来源钻瓜专利网。