[发明专利]一种事件处理方法、装置、设备及存储介质有效
申请号: | 201910385913.2 | 申请日: | 2019-05-09 |
公开(公告)号: | CN110147269B | 公开(公告)日: | 2023-06-13 |
发明(设计)人: | 祝清鲁 | 申请(专利权)人: | 腾讯科技(上海)有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 郝传鑫;贾允 |
地址: | 201200 上海*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 事件 处理 方法 装置 设备 存储 介质 | ||
1.一种事件处理方法,其特征在于,包括:
获取目标事件;
将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;所述第一类事件是计算量小且耦合性大的事件,所述第二类事件是计算量大且耦合性小的事件;
将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;
在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。
2.根据权利要求1所述的一种事件处理方法,其特征在于,所述在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件包括:
在当前时间段,控制主线程在所述单线程阶段以单线程模式运行,处理所述第一类事件;
当所述第一类事件处理完成之后,根据所述主线程生成若干子线程,控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件;
当所述第二类事件处理完成之后,回收所述若干子线程,进入下一个时间段。
3.根据权利要求2所述的一种事件处理方法,其特征在于,所述控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件包括:
在当前时间段对所述第二类事件进行处理之前,获取上一时间段对所述第二类事件中的每个子事件的处理时长,并对所述处理时长进行排序;
在所述多线程阶段,根据排序结果,按照所述处理时长从大到小的顺序,依次处理相应的子事件。
4.根据权利要求1所述的一种事件处理方法,其特征在于,所述方法还包括:
当所述第二类事件中存在需要进行预设操作的子事件时,对所述子事件进行封装,将封装好的子事件留到下一时间段的单线程阶段进行处理。
5.根据权利要求1所述的一种事件处理方法,其特征在于,所述方法还包括:
对单线程阶段的事件处理过程进行检测,当检测到调用多线程预设处理函数时,发出告警信息;
对多线程阶段的事件处理过程进行检测,当检测到调用单线程预设处理函数时,发出告警信息。
6.根据权利要求1所述的一种事件处理方法,其特征在于,所述方法还包括:
对事件处理过程中需要访问的资源进行加锁;
记录事件处理过程中的冲突日志和冲突时间;
根据所述冲突日志和所述冲突时间,确定冲突的优先级;
根据所述优先级,依次对相应的资源进行去锁化处理。
7.根据权利要求6所述的一种事件处理方法,其特征在于,所述根据所述优先级,依次对相应的资源进行去锁化处理包括:
采用线程局部变量,将有冲突的变量进行线程私有化。
8.一种事件处理装置,其特征在于,包括:
目标事件获取模块,用于获取目标事件;
事件分类模块,用于将所述目标事件划分为若干子事件,根据预设规则,将所述若干子事件分类为第一类事件和第二类事件;所述第一类事件是计算量小且耦合性大的事件,所述第二类事件是计算量大且耦合性小的事件;
时间段划分模块,用于将当前时间段划分为在时间上不重叠的时间段,其中,所述在时间上不重叠的时间段包括单线程阶段和多线程阶段;
事件处理模块,用于在所述单线程阶段处理所述第一类事件,在所述多线程阶段处理所述第二类事件。
9.根据权利要求8所述的装置,其特征在于,所述事件处理模块包括:
第一处理模块,用于在当前时间段,控制主线程在所述单线程阶段以单线程模式运行,处理所述第一类事件;
第二处理模块,用于当所述第一类事件处理完成之后,根据所述主线程生成若干子线程,控制所述主线程和所述若干子线程在所述多线程阶段以多线程模式运行,处理所述第二类事件;
处理完成模块,用于当所述第二类事件处理完成之后,回收所述若干子线程,进入下一个时间段。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于腾讯科技(上海)有限公司,未经腾讯科技(上海)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910385913.2/1.html,转载请声明来源钻瓜专利网。