一种分配工作任务的方法及装置的制造方法_4

文档序号:9547686阅读:来源:国知局
送的处理工作任务的请求;为所述请求创建任务分配线程,弃用加锁、解锁处理,减少排队、耗时等的处理,支持多路并发的用户发送的工作任务的请求;通过所述任务分配线程执行原子操作,为所述请求分配工作项序号;若所分配的工作项序号超过所述工作项类型对应的工作项序号取值范围则返回没有任务,否则,根据所述工作项序号提取工作任务,发送给所述用户,从而采用轻量级的数组操作实现多路并发请求工作任务的目的,极大的提高系统处理性能。
[0161]实施例五
[0162]参考图7,图7是本发明实施例分配工作任务的功能模块示意图。
[0163]在实施例三的基础上,所述装置还包括:
[0164]启动模块410,用于所述所分配的工作项序号如果超过所属工作项类型对应的工作项序号取值范围,则如果该工作项类型的任务装载线程没有启动,则启动该工作项类型的任务装载线程,否则,不需要进行启动任务装载线程;
[0165]处理模块411,用于工作项类型的任务装载线程首先设置该工作项类型的工作项序号取值范围为空,清空所述二维数组中所述工作项类型序号对应的所有工作任务,并重新装载该工作项类型的工作任务到二维数组中,并设置该工作项类型的工作项序号取值范围与所装载的工作项个数相匹配。
[0166]经测试,在某种相同硬件条件情况下,用【背景技术】可以从数组(或集合)中每秒获取280个元素;用本文的方案可以从数组(或集合)中每秒获取5万个元素。
[0167]本发明实施例通过装载工作项任务队列到二维数组中,二维数组的一维表示工作项类型,另一维表示具体的工作项任务队列,获取用户发送的处理工作任务的请求;为所述请求创建任务分配线程,弃用加锁、解锁处理,减少排队、耗时等的处理,支持多路并发的用户发送的工作任务的请求;通过所述任务分配线程执行原子操作,为所述请求分配工作项序号;若所分配的工作项序号超过所述工作项类型对应的工作项序号取值范围则返回没有任务,否则,根据所述工作项序号提取工作任务,发送给所述用户,从而采用轻量级的数组操作实现多路并发请求工作任务的目的,极大的提高系统处理性能;通过及时有效清空数据组存储的工作项内容,提高系统的存储空间,进而提高系统分配工作任务的效率。
[0168]以上结合具体实施例描述了本发明实施例的技术原理。这些描述只是为了解释本发明实施例的原理,而不能以任何方式解释为对本发明实施例保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明实施例的其它【具体实施方式】,这些方式都将落入本发明实施例的保护范围之内。
【主权项】
1.一种分配工作任务的方法,其特征在于,所述方法包括: 装载工作项任务队列到二维数组中,二维数组的一维表示工作项类型,另一维表示具体的工作项任务队列,并为每个工作项类型设置工作项序号取值范围; 获取用户发送的处理工作任务的请求; 为所述请求创建任务分配线程; 通过所述任务分配线程执行原子操作,为所述请求分配工作项序号; 若所分配的工作项序号超过所述工作项类型对应的工作项序号取值范围则返回没有任务,否则,根据所述工作项序号提取工作任务,发送给所述用户。2.根据权利要求1所述的方法,其特征在于,通过所述任务分配线程执行原子操作,为所述请求分配工作项序号包括: 通过所述任务分配线程,将工作项序号器的计数值按照设定规则进行计算,计算确定的数值作为分配的工作项序号; 将工作项序号器的计数值加1或减1,得到的数值作为分配的工作项序号。3.根据权利要求1或2所述的方法,其特征在于,所述通过所述任务分配线程,将工作项序号器的计数值按照设定规则进行计算,计算确定的数值作为分配的工作项序号之前,还包括: 确定所述请求是否包括预先设置的工作项类型参数; 若确定所述请求包括预先设置的工作项类型参数,则通过原子操作为所述请求分配与所述工作项类型参数对应的工作项类型序号; 若确定所述请求未包括预先设置的工作项类型参数,则为所述请求分配工作项类型序号; 根据所述工作项类型参数,确定对应的工作项序号器。4.根据权利要求3所述的方法,其特征在于,所述为所述请求分配工作项类型序号,包括: 执行原子操作将工作项类型序号器的当前计数值加1或减1,得到新计数值; 若新计数值超出工作项类型序号的取值范围,则将工作项类型序号器计数值设为取值范围的最小值或最大值,并将此修改后的数值作为新计数值; 将新数值作为分配给所述请求的工作项类型序号。5.根据权利要求3所述的方法,其特征在于,所述根据所述工作项序号提取工作任务,发送给所述用户,包括: 根据所述工作项类型序号和工作项序号从预先存储的二维数组中获取工作任务,所述二维数组的行序号对应于工作项类型序号,列序号对应于工作项序号。6.根据权利要求2所述的方法,其特征在于,所述方法还包括: 所述所分配的工作项序号如果超过所属工作项类型对应的工作项序号取值范围,则如果该工作项类型的任务装载线程没有启动,则启动该工作项类型的任务装载线程,否则,不需要进行启动任务装载线程; 工作项类型的任务装载线程首先设置该工作项类型的工作项序号取值范围为空,清空所述二维数组中所述工作项类型序号对应的所有工作任务,并重新装载该工作项类型的工作任务到二维数组中,并设置该工作项类型的工作项序号取值范围与所装载的工作项个数相匹配。7.—种分配工作任务的装置,其特征在于,所述装置包括: 装载模块,用于装载工作项任务队列到二维数组中,二维数组的一维表示工作项类型,另一维表示具体的工作项任务队列,并为每个工作项类型设置工作项序号取值范围;第一获取模块,用于获取用户发送的处理工作任务的请求; 创建模块,用于为所述请求创建任务分配线程; 第一分配模块,用于通过所述任务分配线程执行原子操作,为所述请求分配工作项序号; 发送模块,若所分配的工作项序号超过所述工作项类型对应的工作项序号取值范围则返回没有任务,否则,根据所述工作项序号提取工作任务,发送给所述用户。8.根据权利要求7所述的装置,其特征在于,所述第一分配模块,包括: 计算单元,用于通过所述任务分配线程,将工作项序号器的计数值按照设定规则进行计算,计算确定的数值作为分配的工作项序号; 所述计算单元,用于: 通过所述任务分配线程,将工作项序号器的计数值加1或减1,确定的数值作为分配的工作项序号。9.根据权利要求7或8所述的装置,其特征在于,所述装置还包括: 第一确定模块,用于在通过所述任务分配线程,将工作项序号器的计数值按照设定规则进行计算,计算确定的数值作为分配的工作项序号之前,确定所述请求是否包括预先设置的工作项类型参数; 第二分配模块,用于若确定所述请求包括预先设置的工作项类型参数,则通过原子操作为所述请求分配与所述工作项类型参数对应的工作项类型序号; 第三分配模块,用于若确定所述请求未包括预先设置的工作项类型参数,则为所述请求分配工作项类型序号; 第二确定模块,用于根据所述工作项类型参数,确定对应的工作项序号器。10.根据权利要求9所述的装置,其特征在于,所述第三分配模块,用于: 执行原子操作将工作项类型序号器的当前计数值加1或减1,得到新计数值; 若新计数值超出工作项类型序号的取值范围,则将工作项类型序号器计数值设为取值范围的最小值或最大值,并将此修改后的数值作为新计数值; 将新数值作为分配给所述请求的工作项类型序号。11.根据权利要求9所述的装置,其特征在于,所述发送模块,用于: 根据所述工作项类型序号和工作项序号从预先存储的二维数组中获取工作任务,所述二维数组的行序号对应于工作项类型序号,列序号对应于工作项序号。12.根据权利要求8所述的装置,其特征在于,所述装置还包括: 启动模块,用于所述所分配的工作项序号如果超过所属工作项类型对应的工作项序号取值范围,则如果该工作项类型的任务装载线程没有启动,则启动该工作项类型的任务装载线程,否则,不需要进行启动任务装载线程; 处理模块,用于工作项类型的任务装载线程首先设置该工作项类型的工作项序号取值范围为空,清空所述二维数组中所述工作项类型序号对应的所有工作任务,并重新装载该工作项类型的工作任务到二维数组中,并设置该工作项类型的工作项序号取值范围与所装载的工作项个数相匹配。
【专利摘要】本发明实施例公开了一种分配工作任务的方法及装置,通过装载工作项任务队列到二维数组中,二维数组的一维表示工作项类型,另一维表示具体的工作项任务队列,获取用户发送的处理工作任务的请求;为所述请求创建任务分配线程,弃用加锁、解锁处理,减少排队等待等耗时的处理,支持多路并发的用户发送的工作任务的请求;通过所述任务分配线程执行原子操作,为所述请求分配工作项序号;若所分配的工作项序号超过所述工作项类型对应的工作项序号取值范围则返回没有任务,否则,根据所述工作项序号提取工作任务,发送给所述用户。本发明的技术方案,通过任务分配线程执行原子操作,弃用加锁、解锁操作,从而实现多路并发请求工作任务的目的,极大的提高系统处理性能。
【IPC分类】G06Q10/06
【公开号】CN105303307
【申请号】CN201510674211
【发明人】费振国, 高昊江, 李效本
【申请人】北京京北方信息技术有限公司
【公开日】2016年2月3日
【申请日】2015年10月16日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1