任务处理方法及装置制造方法及图纸

技术编号:27815161 阅读:10 留言:0更新日期:2021-03-30 10:07
本说明书提供任务处理方法及装置,其中所述任务处理方法包括:主线程将待处理任务写入待处理任务队列;至少两个工作线程中的至少一个工作线程从待处理任务队列中获取目标位置处的第一待处理任务并备份,得到至少一个工作线程对应的备份任务;在确定至少一个工作线程中的目标工作线程对应的备份任务与待处理任务队列中目标位置处当前的第二待处理任务相同的情况下,目标工作线程删除第二待处理任务,并执行所述备份任务。本说明书实施例中,多个工作线程可以并行从待处理任务队列中获取待处理任务,且可以避免多个工作线程获取到同一个待处理任务,能够降低游戏服务器资源的消耗,并提高队列访问的安全性。并提高队列访问的安全性。并提高队列访问的安全性。

【技术实现步骤摘要】
任务处理方法及装置


[0001]本说明书涉及数据处理
,特别涉及任务处理方法及装置。

技术介绍

[0002]游戏服务器在需要对数据库中的数据进行数据处理时,通常是通过数据库管理中转服务与数据库交互,但这种方式需要用到额外的数据库管理中转服务,会导致很多服务器性能上的损耗。因此,为了减少服务器性能的损耗,且不阻塞游戏服务器的主线程,可以创建工作线程来与数据库进行交互,但如此又会存在多线程之间数据访问的安全问题。
[0003]现有技术中,可以通过锁机制来解决上述问题。具体地,当某个工作线程要对队列进行访问时,需要获取该队列的队列锁,然后才能对该队列进行相应的读写访问,当队列锁被某个工作线程取得时,其他工作线程则无法对该队列进行访问。
[0004]但在上述方式中,若多个工作线程需要并行访问队列,没有取得队列锁的工作线程可能需要一直等待而无法执行其他操作,不但浪费服务器的处理资源,还会降低服务器获取队列中任务的效率,进而降低任务处理的效率。

技术实现思路

[0005]有鉴于此,本说明书实施例提供了一种任务处理方法。本说明书同时涉及一种获取数据的装置,一种计算设备,以及一种计算机可读存储介质,以解决现有技术中存在的技术缺陷。
[0006]根据本说明书实施例的第一方面,提供了一种任务处理方法方法,应用于游戏服务器,所述游戏服务器创建主线程和至少两个工作线程,包括:
[0007]所述主线程将待处理任务写入待处理任务队列;
[0008]所述至少两个工作线程中的至少一个工作线程从所述待处理任务队列中获取目标位置处的第一待处理任务并备份,得到所述至少一个工作线程对应的备份任务;
[0009]在确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务相同的情况下,所述目标工作线程删除所述第二待处理任务,并执行所述备份任务。
[0010]可选地,所述至少两个工作线程中的至少一个工作线程从所述待处理任务队列中获取目标位置处的第一代处理任务并备份,得到所述至少一个工作线程对应的备份任务之后,还包括:
[0011]在确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同的情况下,所述目标工作线程删除所述备份任务。
[0012]可选地,确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务中所述目标位置处当前的第二待处理任务相同,包括:
[0013]将所述至少一个工作线程对应的备份任务分别与所述第二待处理任务做比对,若
所述至少一个工作线程对应的备份任务中存在与所述第二待处理任务相同的目标备份任务,将所述目标备份任务对应的工作线程确定为所述目标工作线程,并确定所述至少一个工作线程的目标工作线程对应的备份任务与所述待处理任务中所述目标位置处当前的第二待处理任务相同。
[0014]可选地,确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同,包括:
[0015]将所述至少一个工作线程对应的备份任务分别与所述第二待处理任务做比对,若所述至少一个工作线程对应的备份任务中存在与所述第二待处理任务相同的目标备份任务,将所述目标备份任务对应的工作线程确定为所述目标工作线程,并确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同。
[0016]可选地,所述目标工作线程执行所述备份任务,包括:
[0017]所述目标工作线程基于所述备份任务对数据库中的数据进行处理,并将任务处理结果反馈给所述主线程。
[0018]可选地,所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并将任务处理结果反馈给所述主线程,包括:
[0019]所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并获取所述任务处理结果;
[0020]所述目标工作线程将所述任务处理结果写入结果反馈队列;
[0021]所述主线程从所述结果反馈队列中获取所述任务处理结果。
[0022]可选地,所述待处理任务包括任务标识,则所述备份任务中包括所述任务标识,所述目标工作线程获取所述任务处理结果,包括:
[0023]所述目标工作线程获取携带所述任务标识的所述任务处理结果。
[0024]可选地,所述主线程从所述结果反馈队列中获取所述任务处理结果,包括:
[0025]所述主线程基于所述任务标识从所述结果反馈队列中获取所述任务处理结果。
[0026]可选地,若所述备份任务为数据获取任务,则所述任务处理结果为所述数据获取任务对应的目标数据,所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并获取所述任务处理结果,包括:
[0027]所述目标工作线程从所述数据库中获取所述数据获取任务对应的目标数据。
[0028]可选地,若所述备份任务为数据查询任务,则所述任务处理结果为所述数据查询任务对应的数据查询结果,所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并获取所述任务处理结果,包括:
[0029]所述目标工作线程,在所述数据库中查询与所述数据查询任务对应的待查询数据,得到所述数据查询结果。
[0030]可选地,若所述备份任务为数据更新任务,则所述任务处理结果为所述数据更新任务对应的更新数据,所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并获取所述任务处理结果,包括:
[0031]所述目标工作线程,对所述数据库中与所述数据更新任务对应的待更新数据进行更新,得到所述更新数据。
[0032]可选地,所述主线程将待处理任务写入待处理任务队列之前,还包括:
[0033]所述主线程接收所述待处理任务对应的回调函数。
[0034]可选地,所述待处理任务基于用户的操作生成并由客户端发送至所述服务器,所述方法还包括:
[0035]所述主线程调用所述回调函数将所述任务处理结果发送至所述客户端。
[0036]根据本说明书实施例的第二方面,提供了一种任务处理方法装置,应用于游戏服务器,所述游戏服务器创建主线程和至少两个工作线程,包括:
[0037]任务写入模块,被配置为通过所述主线程将待处理任务写入待处理任务队列;
[0038]任务获取模块,被配置为通过所述至少两个工作线程中的至少一个工作线程从所述待处理任务队列中获取目标位置处的第一待处理任务并备份,得到所述至少一个工作线程对应的备份任务;
[0039]任务执行模块,被配置为在确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务相同的情况下,通过所述目标工作线程删除所述第二待处理任务,并执行所述备份任务。
[0040]根据本说明书实施例的第三方面本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种任务处理方法,其特征在于,应用于游戏服务器,所述游戏服务器创建主线程和至少两个工作线程,所述方法包括:所述主线程将待处理任务写入待处理任务队列;所述至少两个工作线程中的至少一个工作线程从所述待处理任务队列中获取目标位置处的第一待处理任务并备份,得到所述至少一个工作线程对应的备份任务;在确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务相同的情况下,所述目标工作线程删除所述第二待处理任务,并执行所述备份任务。2.如权利要求1所述的任务处理方法,其特征在于,所述至少两个工作线程中的至少一个工作线程从所述待处理任务队列中获取目标位置处的第一待处理任务并备份,得到所述至少一个工作线程对应的备份任务之后,还包括:在确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同的情况下,所述目标工作线程删除所述备份任务。3.如权利要求1所述的任务处理方法,其特征在于,确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务中所述目标位置处当前的第二待处理任务相同,包括:将所述至少一个工作线程对应的备份任务分别与所述第二待处理任务做比对,若所述至少一个工作线程对应的备份任务中存在与所述第二待处理任务相同的目标备份任务,将所述目标备份任务对应的工作线程确定为所述目标工作线程,并确定所述至少一个工作线程的目标工作线程对应的备份任务与所述待处理任务中所述目标位置处当前的第二待处理任务相同。4.如权利要求2所述的任务处理方法,其特征在于,确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同,包括:将所述至少一个工作线程对应的备份任务分别与所述第二待处理任务做比对,若所述至少一个工作线程对应的备份任务中存在与所述第二待处理任务相同的目标备份任务,将所述目标备份任务对应的工作线程确定为所述目标工作线程,并确定所述至少一个工作线程中的目标工作线程对应的备份任务与所述待处理任务队列中所述目标位置处当前的第二待处理任务不同。5.如权利要求1或3所述的任务处理方法,其特征在于,所述目标工作线程执行所述备份任务,包括:所述目标工作线程基于所述备份任务对数据库中的数据进行处理,并将任务处理结果反馈给所述主线程。6.如权利要求5所述的任务处理方法,其特征在于,所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并将任务处理结果反馈给所述主线程,包括:所述目标工作线程基于所述备份任务对所述数据库中的数据进行处理,并获取所述任务处理结果;所述目标工作线程将所述任务处理结果写入结果反馈队列;
所述主线程从所述结果反馈队列中获取所述任务处理结果。7.如权利要求6所述的任务处理方法,其特征在于,所述待处理任务包括任务标识,则所述备份任务中包括所述任务标识,所述目标工作线程获取所述任务处理结果,包括:所述目标工作线程获取携带所述任务标识的所述任务处理结果。8.如权利要求7所述的任务处理方法,其特征在于,所...

【专利技术属性】
技术研发人员:周启立姚双喜
申请(专利权)人:珠海西山居移动游戏科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1