基于信号量的消息处理方法、设备及存储介质技术

技术编号:39062516 阅读:13 留言:0更新日期:2023-10-12 19:55
本申请提供一种基于信号量的消息处理方法、设备及存储介质,可用于金融领域或其他领域。该方法包括:创建消费端与生产端共享的内存区域,初始化生产信号量、消费信号量和运行信号量;创建并启动多个消息处理线程;控制生产端基于生产信号量和运行信号量,将消息处理线程写入内存区域进行处理;控制消费端基于消费信号量和运行信号量,将消息处理线程从内存区域取出进行处理,基于信号量实现多线程的并发消息任务处理。本申请的方法实现了提高计算机资源利用率的技术效果。机资源利用率的技术效果。机资源利用率的技术效果。

【技术实现步骤摘要】
基于信号量的消息处理方法、设备及存储介质


[0001]本申请涉及金融领域,尤其涉及一种基于信号量的消息处理方法、设备及存储介质。

技术介绍

[0002]随着信息时代数据量的增长,消息任务处理不满足于单线处理的方式,多任务并发处理成为现有消息任务处理的重要手段,其中多线程任务处理模式为主要应用手段,在现有的银行收发报系统中,对多线程任务处理模式的应用主要体现为生产者消费者模式的应用。
[0003]现有技术中银行收发报系统实现生产者消费者模式使用IBM MQ消息中间件作为第三方框架,消息的获取和发出使用的是经典的生产者和消费者模式,即生产者和消费者之间不通讯,采用阻塞队列进行通讯。
[0004]现有技术中使用的IBM MQ中间件,目标使用项目为信息收发量大的项目,不适用于处理小体量项目中的信息收发,IBM MQ中间件的使用需要消耗的计算机资源和小体量项目实际需要的计算机资源不匹配,存在计算机资源利用率低的技术问题。

技术实现思路

[0005]本申请提供一种基于信号量的消息处理方法、设备及存储介质,用以解决现有多线程任务处理中计算机资源利用率低的技术问题。
[0006]第一方面,本申请提供一种基于信号量的消息处理方法,包括:
[0007]创建消费端与生产端共享的内存区域,初始化生产信号量、消费信号量和运行信号量;其中,内存区域的缓存范围为0到N个线程;生产信号量小于或等于N,消费信号量属于[0,N],运行信号量用于控制生产端和消费端交替运行;生产信号量、消费信号量、运行信号量和N均为正整数;
[0008]创建并启动多个消息处理线程;
[0009]控制生产端基于生产信号量和运行信号量,将消息处理线程写入内存区域进行处理;
[0010]控制消费端基于消费信号量和运行信号量,将消息处理线程从内存区域取出进行处理。
[0011]可选地,控制生产端基于生产信号量和运行信号量,将消息处理线程写入内存区域进行处理,包括:
[0012]获取生产信号量和运行信号量,判断生产端对应的消息处理线程的数量是否满足第一预设条件;若是,则判断运行信号量是否满足第二预设条件;其中,第二预设条件表征生产端处于待执行状态;
[0013]若是,则对生产信号量进行更新,并控制生产端将消息处理线程写入内存区域进行处理,对消费信号量进行更新。
[0014]可选地,控制消费端基于消费信号量和运行信号量,将消息处理线程从内存区域取出进行处理,还包括:
[0015]获取消费信号量和运行信号量,判断消费端对应的消息处理线程的数量是否满足的第三预设条件;若是,则判断运行信号量是否满足第四预设条件;其中,第四预设条件表征消费端处于待执行状态;
[0016]若是,则对消费信号量进行更新,并控制消费端将消息处理线程从内存区域取出进行处理,对生产信号量进行更新。
[0017]可选地,基于内存区域的缓存范围确定生产端对应的许可证数量为N,控制生产端基于生产信号量和运行信号量,将消息处理线程写入内存区域进行处理,包括:
[0018]获取生产信号量和运行信号量,判断生产端对应的消息处理线程的数量是否小于或等于N;若是,则判断运行信号量是否满足第二预设条件;其中,第二预设条件表征生产端具有对应的处于可用状态的许可证,以使生产端处于待执行状态;
[0019]若是,则对生产信号量进行更新,调用获取方法获取许可证,控制生产端将获取到许可证的消息处理线程写入内存区域进行处理,并对消费信号量进行更新;基于以下方式对生产信号量和消费信号量进行更新:
[0020]P=P-1
[0021]C=C+1
[0022]其中,P为生产信号量,C为消费信号量。
[0023]可选地,控制消费端基于消费信号量和运行信号量,将消息处理线程从内存区域取出进行处理,还包括:
[0024]获取消费信号量和运行信号量,判断消费端对应的消息处理线程的数量是否大于0;若是,则判断运行信号量是否满足第四预设条件;其中,第四预设条件表征消费端处于待执行状态;
[0025]若是,则对消费信号量进行更新,调用获取方法控制消费端将消息处理线程从内存区域取出进行处理,释放消息处理线程对应的许可证,并对生产信号量进行更新;基于以下方式对生产信号量和消费信号量进行更新:
[0026]P=P+1
[0027]C=C-1
[0028]其中,P为生产信号量,C为消费信号量。
[0029]可选地,基于内存区域的缓存范围确定生产端对应的许可证数量为N,还包括:
[0030]在生产端对应的消息处理线程的数量大于N时,将未获得许可证的生产端对应的消息处理线程确定为睡眠状态。
[0031]可选地,在消费端对应的消息处理线程的数量等于0时,包括:控制消费端进入睡眠状态。
[0032]第二方面,本申请提供一种基于信号量的消息处理设备,包括:
[0033]第一处理模块,用于创建消费端与生产端共享的内存区域,初始化生产信号量、消费信号量和运行信号量;其中,内存区域的缓存范围为0到N个线程;生产信号量小于或等于N,消费信号量属于[0,N],运行信号量用于控制生产端和消费端交替运行;生产信号量、消费信号量、运行信号量和N均为正整数;
[0034]第二处理模块,用于创建并启动多个消息处理线程;
[0035]第一控制模块,用于控制生产端基于生产信号量和运行信号量,将消息处理线程写入内存区域进行处理;
[0036]第二控制模块,用于控制消费端基于消费信号量和运行信号量,将消息处理线程从内存区域取出进行处理。
[0037]可选地,该设备还用于:
[0038]获取生产信号量和运行信号量,判断生产端对应的消息处理线程的数量是否满足第一预设条件;若是,则判断运行信号量是否满足第二预设条件;其中,第二预设条件表征生产端处于待执行状态;
[0039]若是,则对生产信号量进行更新,并控制生产端将消息处理线程写入内存区域进行处理,对消费信号量进行更新。
[0040]可选地,该设备还用于:
[0041]获取消费信号量和运行信号量,判断消费端对应的消息处理线程的数量是否满足的第三预设条件;若是,则判断运行信号量是否满足第四预设条件;其中,第四预设条件表征消费端处于待执行状态;
[0042]若是,则对消费信号量进行更新,并控制消费端将消息处理线程从内存区域取出进行处理,对生产信号量进行更新。
[0043]可选地,该设备还用于:
[0044]获取生产信号量和运行信号量,判断生产端对应的消息处理线程的数量是否小于或等于N;若是,则判断运行信号量是否满足第二预设条件;其中,第二预设条件表征生产端具有对应的处于可用状态的许可证,以使生产端处于待执行状态;
[0045]若是,则对生产信号量进行更新,调用获取方法获取许可证,控制生产端将获取到许可证的消息处理线程写入内存区域进行处理,并对消费信号量进行本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于信号量的消息处理方法,其特征在于,包括:创建消费端与生产端共享的内存区域,初始化生产信号量、消费信号量和运行信号量;其中,所述内存区域的缓存范围为0到N个线程;所述生产信号量小于或等于N,所述消费信号量属于[0,N],所述运行信号量用于控制所述生产端和所述消费端交替运行;所述生产信号量、所述消费信号量、所述运行信号量和N均为正整数;创建并启动多个消息处理线程;控制所述生产端基于所述生产信号量和所述运行信号量,将所述消息处理线程写入所述内存区域进行处理;控制消费端基于所述消费信号量和所述运行信号量,将所述消息处理线程从所述内存区域取出进行处理。2.根据权利要求1所述的方法,其特征在于,所述控制所述生产端基于所述生产信号量和所述运行信号量,将所述消息处理线程写入所述内存区域进行处理,包括:获取所述生产信号量和所述运行信号量,判断所述生产端对应的所述消息处理线程的数量是否满足第一预设条件;若是,则判断所述运行信号量是否满足第二预设条件;其中,所述第二预设条件表征所述生产端处于待执行状态;若是,则对所述生产信号量进行更新,并控制所述生产端将所述消息处理线程写入所述内存区域进行处理,对所述消费端信号量进行更新。3.根据权利要求1所述的方法,其特征在于,所述控制消费端基于所述消费信号量和所述运行信号量,将所述消息处理线程从所述内存区域取出进行处理,包括:获取所述消费信号量和所述运行信号量,判断所述消费端对应的所述消息处理线程的数量是否满足的第三预设条件;若是,则判断所述运行信号量是否满足第四预设条件;其中,所述第四预设条件表征所述消费端处于待执行状态;若是,则对所述消费信号量进行更新,并控制所述消费端将所述消息处理线程从所述内存区域取出进行处理,对所述生产信号量进行更新。4.根据权利要求2所述的方法,其特征在于,基于所述内存区域的所述缓存范围确定所述生产端对应的许可证数量为N,所述控制所述生产端基于所述生产信号量和所述运行信号量,将所述消息处理线程写入所述内存区域进行处理,包括:获取所述生产信号量和所述运行信号量,判断所述生产端对应的所述消息处理线程的数量是否小于或等于N;若是,则判断所述运行信号量是否满足所述第二预设条件;其中,所述第二预设条件表征所述生产端具有对应的处于可用状态的所述许可证,以使所述生产端处于待执行状态;若是,则对所述生产信号量进行更新,调用获取方法获取所述许可证,控制所述生产端将获取到所述许可证的所述消息处理线程写入所述内存区域进行处理,并对所述消费信号量进行更新;基于以下方式对所述生产信号量和所述消...

【专利技术属性】
技术研发人员:申世哲
申请(专利权)人:中国银行股份有限公司
类型:发明
国别省市:

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

1