一种事件处理方法、装置、设备及存储介质制造方法及图纸

技术编号:21913739 阅读:28 留言:0更新日期:2019-08-21 12:21
本发明专利技术涉及一种事件处理方法、装置、设备及存储介质,所述方法包括:获取目标事件;将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。本发明专利技术根据不同线程的处理特性,将不同类型的事件放在不同的线程阶段进行处理,提高了开发效率以及系统性能;同时将单线程与多线程相结合,平衡了开发成本与性能的问题。

An Event Processing Method, Device, Equipment and Storage Media

【技术实现步骤摘要】
一种事件处理方法、装置、设备及存储介质
本专利技术涉及计算机
,尤其涉及一种事件处理方法、装置、设备及存储介质。
技术介绍
在计算机技术应用领域,通常会采用单进程单线程模型、单进程多线程模型以及多进程单线程模型进行事件处理。单进程单线程模型开发效率高,但不足以承载过多的用户;单进程多线程模型没有内存冗余的弊端,能够充分利用多核优势,不需要中控服务器同步数据,但是会涉及到加锁以及大量异步回调,开发以及调试成本较高;多进程单线程模型可以进行故障隔离,单个服务器进程宕机不会影响全服玩家,其次是扩展性强,通过分布式部署,可实现多人同时在线,但是数据同步以及异步调用会带来很大的开发以及调试成本。
技术实现思路
本专利技术所要解决的技术问题在于,提供一种事件处理方法、装置、设备及存储介质,采用单线程与多线程相结合的方式进行事件处理,从而平衡了性能与开发成本的问题,提高了开发效率。为了解决上述技术问题,第一方面,本专利技术提供了一种事件处理方法,所述方法包括:获取目标事件;将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。第二方面,本专利技术提供了一种事件处理装置,所述装置包括:目标事件获取模块,用于获取目标事件;事件分类模块,用于将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;时间段划分模块,用于将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;事件处理模块,用于在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。第三方面,本专利技术提供了一种设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的事件处理方法。第四方面,本专利技术提供了一种计算机存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、至少一段程序、代码集或指令集由处理器加载并执行如第一方面所述的事件处理方法。实施本专利技术实施例,具有如下有益效果:本专利技术通过对获取到的目标事件进行划分,得到若干子事件;根据预设规则,对若干子事件进行分类,得到第一类事件和第二类事件;将当前时间段划分为在时间上不重叠的时间段,包括单线程阶段和多线程阶段;在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理第二类事件;其中,单线程阶段处理计算量小,耦合性大的事件,多线程阶段处理计算量大、耦合性小的事件,这样根据不同线程的处理特性,将不同类型的事件放在不同的线程阶段进行处理,提高了开发效率以及系统性能;同时将单线程与多线程相结合,平衡了开发成本与性能的问题。附图说明图1是本专利技术实施例提供的一种事件处理方法流程图;图2是本专利技术实施例提供的时间段分割示意图;图3是本专利技术实施例提供的分阶段事件处理过程流程图;图4是本专利技术实施例提供的游戏中CPU耗时分布示意图;图5是本专利技术实施例提供的有限多线程模型性能示意图;图6是本专利技术实施例提供的OpenMP经典的运行模型示意图;图7是本专利技术实施例提供的一种多线程阶段事件处理方法流程图;图8是本专利技术实施例提供的一种事件检测方法流程图;图9是本专利技术实施例提供的一种锁处理方法流程图;图10是本专利技术实施例提供的一种事件处理装置示意图;图11是本专利技术实施例提供的事件处理模块示意图;图12是本专利技术实施例提供的第二处理模块示意图;图13是本专利技术实施例提供的检测模块示意图;图14是本专利技术实施例提供的锁处理模块示意图;图15是本专利技术实施例提供的一种设备结构示意图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述。显然,所描述的实施例仅仅是本专利技术的一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在本专利技术的描述中,需要理解的是,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。而且,术语“第一”、“第二”等适用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本专利技术的实施例能够以除了在这里图示或描述的那些以外的顺序实施。本专利技术提出的单线程与多线程相结合的有限多线程模型,能够将不同的事件放在不同线程进行处理,具体的实现过程可参见图1,其示出了一种事件处理方法,可应用于服务器侧,所述方法包括:S110.获取目标事件。这里的目标事件可以是从预先存储的事件队列中拿出的待处理事件,也可以是当前直接获取到的目标事件。目标事件中可以包括用户终端发来的各种请求消息,以及各系统的心跳逻辑等,服务器需要对接收到的相关事件进行相应的处理。S120.将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件。总体上来讲,第一类事件可以是计算量小,且耦合性大的事件;第二类事件可以是计算量大,其耦合性小的事件。S130.将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段。可以理解的是,当前时间段的长度不一定是预设的,即对于每一个时间段,都可以有不同的时间长度,其可以根据当前获取到的目标事件来进行确定。对于获取到的每一个目标事件,处理该目标事件的时长可能都是不一样的,处理每个目标事件的时长均是由处理第一类事件的时长加上处理第二类事件的时长来确定的,即对应单线程阶段时长加上多线程阶段的时长。S140.在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。请参见图2,其示出了时间段分割示意图,将当前时间段分为了单线程阶段和多线程阶段两个阶段,单线程阶段和多线程阶段在时间上是不重叠的,是一个阶段结束之后才会进入到下一个阶段。具体分阶段进行事件处理过程具体可参见图3,具体可包括:S310.在当前时间段,控制主线程在所述单线程阶段以单线程模式运行,处理所述第一类事件。程序开始执行时,启动的线程为主线程,主线程在单线程阶段以单线程模式执行相应的处理操作。S320.当所述第一类事件处理完成之后,根据所述主线程生成若干子线程,控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件。进入多线程阶段时,主线程会根据需要生成相应的子线程,以满足处理第二类事件的需求。S330.当所述第二类事件处理完成之后,回收所述若干子线程,进入下一个时间段。下面具体分析哪些事件可以放到单线程去执行,哪些事件可以放到多线程去执行。本实施例中,以相关游戏应用场景为例,一般放在单线程执行的事件包括:(1)对于全局变量(global、static和单件的)有修改的尽量放在单线程阶段本文档来自技高网...

【技术保护点】
1.一种事件处理方法,其特征在于,包括:获取目标事件;将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。

【技术特征摘要】
1.一种事件处理方法,其特征在于,包括:获取目标事件;将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。2.根据权利要求1所述的一种事件处理方法,其特征在于,所述在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件包括:在当前时间段,控制主线程在所述单线程阶段以单线程模式运行,处理所述第一类事件;当所述第一类事件处理完成之后,根据所述主线程生成若干子线程,控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件;当所述第二类事件处理完成之后,回收所述若干子线程,进入下一个时间段。3.根据权利要求2所述的一种事件处理方法,其特征在于,所述控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件包括:在当前时间段对所述第二类事件进行处理之前,获取上一时间段对所述第二类事件中的每个子事件的处理时长,并对所述处理时长进行排序;在所述多线程阶段,根据排序结果,按照所述处理时长从大到小的顺序,依次处理相应的子事件。4.根据权利要求1所述的一种事件处理方法,其特征在于,所述方法还包括:当所述第二类事件中存在需要进行预设操作的子事件时,对所述子事件进行封装,将封装好的子事件留到下一时间段的单线程阶段进行处理。5.根据权利要求1所述的一种事件处理方法,其特征在于,所述方法还包括:对单线程阶段的事件处理过程进...

【专利技术属性】
技术研发人员:祝清鲁
申请(专利权)人:腾讯科技上海有限公司
类型:发明
国别省市:上海,31

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

1