预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)中华人民共和国国家知识产权局(12)发明专利申请(10)申请公布号CN108153596A(43)申请公布日2018.06.12(21)申请号201711346923.2(22)申请日2017.12.15(71)申请人珠海金山网络游戏科技有限公司地址519000广东省珠海市吉大景山路莲山巷8号金山软件大厦申请人珠海西山居移动游戏科技有限公司(72)发明人黄晓权(74)专利代理机构广州嘉权专利商标事务所有限公司44205代理人俞梁清(51)Int.Cl.G06F9/54(2006.01)权利要求书1页说明书6页附图2页(54)发明名称一种基于无锁队列的消息处理方法和装置(57)摘要本发明提出一种基于无锁队列的消息处理方法,包括以下步骤:创建任务消息的消息队列,并对队列清空以实现消息队列的初始化;获取主线程接收到的任务消息,并将获取的任务消息放入消息队列的队尾;按照次序从消息队列的队头弹出任务消息,并检测任务消息的类型;根据检测所得的类型,调用对应的分发处理函数执行。本发明的有益效果为:充分利用中央处理器多核的特点并发管理任务消息的接收和分发,并通过轮流循环操作有序的处理每一个消息,使应用程序的执行效率得到大大提升,从而增加其稳定性。CN108153596ACN108153596A权利要求书1/1页1.一种基于无锁队列的消息处理方法,其特征在于,包括以下步骤:创建任务消息的队列,并对队列清空以实现队列的初始化;获取主线程接收到的任务消息,并将获取的任务消息放入消息队列的队尾;按照次序从消息队列的队头弹出任务消息,并检测任务消息的类型;根据检测所得的类型,调用对应的分发处理函数执行。2.根据权利要求1所述方法,其特征在于,任务消息的放入和弹出是由区别于主线程的其他线程执行。3.根据权利要求2所述方法,其特征在于,任务消息的放入和弹出分别是由至少一个线程执行。4.根据权利要求1所述方法,其特征在于,当消息队列在预设时间段内都为空队列时,新获取主线程接收到的任务消息将直接返回由主线程执行。5.根据权利要求1所述方法,其特征在于,在将获取的任务消息放入消息队列的队尾前还执行如下子步骤:校验所获取主线程接收到的任务消息,并对错误的任务消息执行容错处理。6.根据权利要求5所述方法,其特征在于,容错处理的处理时间超过预设阈值时,将抛弃对应的任务消息并给出警告;否则容错处理成功校正完毕后,任务消息将放入消息队列的队尾。7.根据权利要求5所述方法,其特征在于,任务消息的校验和容错处理是由区别于主线程的其他线程执行。8.根据权利要求1所述方法,其特征在于,当消息队列的长度大于预设长度时将发出警告。9.一种基于无锁队列的消息处理装置,其特征在于,包括以下模块:初始化模块,用于创建任务消息的消息队列,并对队列清空以实现消息队列的初始化;入队模块,用于获取主线程接收到的任务消息,并将获取的任务消息放入消息队列的队尾;出队模块,用于按照次序从消息队列的队头弹出任务消息,并检测任务消息的类型;处理模块,用于根据检测所得的类型,调用对应的分发处理函数执行。10.一种计算机可读存储介质,其上存储有计算机指令,其特征在于该指令被处理器执行时实现如权利要求1至8中任一项所述的方法的步骤。2CN108153596A说明书1/6页一种基于无锁队列的消息处理方法和装置技术领域[0001]本发明涉及计算机系统领域,尤其涉及一种基于无锁队列的消息处理方法和装置。背景技术[0002]在计算机领域中,随着应用程序功能的多样化和复杂化,其各线程之间需要通过大量的消息交流协作,使得软件能够正常地运行。但是,计算机中可分配调用的资源是有限的,当面对大量消息(例如是网络消息、游戏逻辑消息或者编辑器编辑消息)的时候,操作系统就会出现消息处理不过来的情况。具体地,此时操作系统要么丢失消息,使得相应的操作没有得到响应;要么消息需要等待较长的时间才能得到响应,从而使得程序运行不流畅。[0003]为了处理上述情况,目前的主流方法是基于多线程的操作系统,对各条消息创建相应的线程执行。虽然上述方法使得应用程序的主线程逻辑执行不因消息响应的延迟而受到妨碍,但是其并没有改善消息响应延迟的问题。应用程序依然会在大量消息需要执行的情况下出现执行效率下降。发明内容[0004]本发明的目的是解决现有技术的不足,提供一种基于无锁队列的消息处理的方法和装置通过无锁队列轮流循环处理的机制和组合利用多线程的机制,能够获得提升应用程序执行效率和运行时稳定性的技术效果。[0005]为了实现上述目的,本发明采用以下的技术方案。[0006]首先,本发明提出一种基于无锁队列的消息处理方法,包括以下步骤:创建任务消息的消息队列,并对队列清空以实现消息队列的初始化;获取主线程接收到的任务消息,并将获取的任务消息放入消息队列的队尾