一种采用多线程处理业务应用的方法_2

文档序号:8512437阅读:来源:国知局
步骤,多线程处理业务系统框架初始化完成,系统进入就绪状态。
[0026]业务调度线程运行流程图如图3所示,开始状态下进入初始化任务待处理队列、设置阀值,判断是否收到退出事件,如果是则结束,否则进入判断是否业务类型注册,如果是则进入业务类型注册子流程,否则进入判断是否业务处理消息,如果是则进入业务处理子流程,否则进入判断是否业务处理返回消息,如果是则发送到TCP通讯模块,否则回到判断是否收到退出事件状态;业务类型注册子流程与业务处理子流程结束之后继续回到判断是否收到退出事件的状态。
[0027]循环业务驱动线程运行流程图如图4所示,开始状态下,注册调度状态监测任务,判断是否收到退出事件,如果是则结束,否则转入判断是否有注册的任务间隔到来,如果是,则向业务调度线程发送业务处理命令,否则回到是否收到退出事件状态继续判断。
[0028]图5示出通用消息头结构体示例性伪代码,结构体MSG。
[0029]图6示出业务处理类型注册消息结构体伪代码。
[0030]业务处理类型注册消息过程如图7所示:开始状态下检测是否已经注册,如果是则注册失败返回,而后结束,否则转入判断是否注册类型超出阀值,如果是则注册失败返回,而后结束,否则转入判断是否注册处理方法验证失败,如果是则注册失败返回,而后结束,否则注册成功,分配类型ID,返回成功,而后结束程序。
[0031]调度检测消息流程图如图8,开始状态下,获取已经注册业务处理类型,进入判断是否该类型业务处理线程有处于空闲状态的线程,如果是,则该线程空闲时间超过10分钟否则转入判断是否全部遍历完成状态;如果是该线程空闲时间超过10分钟,则结束该业务处理线程,清理该线程中无锁队列后转入是否全部遍历完成状态,否则直接转入判断是否全部遍历完成状态;如果是全部遍历完成,则结束,否则回到获取已注册业务处理类型,如此循环检测。
[0032]业务处理消息结构体和业务处理结果消息结构体伪代码如图9所示,业务处理结果消息流程图如图10所示:开始状态下获取业务处理信息,转入判断类型是否已经注册,如果是,则转入判断是否有不繁忙的处理线程,如果监测到是有不繁忙的处理线程,则将业务处理信息插入处理线程无锁队列而后转入处理线程处理业务子流程,进而发送业务处理结果后再返回获取业务处理信息状态;如果监测到没有不繁忙的处理线程则转入判断是否可以增加新的处理线程,是则转入将业务处理信息插入新增的处理线程无锁队列,再转入处理线程处理业务子流程,进而发送业务处理结果后再返回获取业务处理信息状态;
如果不可以增加新的处理线程,则直接转入发送业务处理结果状态,再返回获取业务处理信息,如此循环。
[0033]以上对本申请所提供的一种实现虚拟机与管理域进程间通信的方法进行了详细介绍,本文中应用了实施例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
【主权项】
1.一种采用多线程处理业务应用的方法,其特征在于,包括以下步骤: (1)程序在主线程中预先创建并激活业务调度线程; (2)业务调度线程激活后,创建激活循环业务驱动线程; (3)循环业务驱动线程启动成功后,首先注册一个调度状态检测的任务,该任务周期性地调度状态检测消息到业务调度线程,检测业务调度线程当前的运行信息; (4)业务调度线程接受业务处理类型注册消息,根据注册的消息,为该业务处理类型启动默认或指定的处理线程数量; (5)为每个业务处理线程分配一个无锁队列; (6)业务调度线程接收到已注册的业务处理消息,业务调度线程会根据该类型业务的处理线程负载情况选择不繁忙的业务处理线程; (7)业务调度线程将业务处理消息中的数据区引用计数置为非零,插入选择的业务处理线程的无锁队列中,业务处理线程会从自己的无锁队列中获取业务处理消息,进行处理; (8)当业务处理完毕,业务处理线程向业务调度线程发送处理完毕返回消息,业务处理线程将业务处理消息中的数据区引用计数置零,以便于该数据区被业务调度线程重新使用; (9)业务调度线程收到处理完毕返回消息,将该消息反馈给外部消息源。
2.根据权利要求1所述的一种采用多线程处理业务应用的方法,其特征在于:所述的循环业务驱动线程用于根据注册的循环业务驱动业务,周期性的驱动业务调度线程执行指定业务。
3.根据权利要求1所述的一种采用多线程处理业务应用的方法,其特征在于:所述的步骤(4)中,如果业务处理类型超过业务类型数最大阈值,则向业务类型注册消息源返回注册失败;如果业务处理类型注册消息中的业务处理方法加载失败,则向业务类型注册消息源返回注册失败。
4.根据权利要求1-3任一项所述的一种采用多线程处理业务应用的方法,其特征在于,还包括:如果该业务为定时循环业务,则同时在循环业务驱动线程注册循环业务驱动任务,该任务会根据业务处理类型注册消息中的时间间隔,周期性的驱动业务调度线程执行指定业务。
5.根据权利要求1-3任一项所述的一种采用多线程处理业务应用的方法,其特征在于,还包括:所述的步骤(6)中,如果该类型的业务处理线程都处于繁忙状态,即无锁队列的内的业务处理消息数大于设定的阈值,则为该类型的业务处理增加新的处理线程。
6.根据权利要求5所述的一种采用多线程处理业务应用的方法,其特征在于,还包括:如果系统的实际情况无法再增加新的处理线程给该类业务,则将该业务处理消息放入业务调度线程维护的待处理队列。
7.根据权利要求5所述的一种采用多线程处理业务应用的方法,其特征在于,还包括:所述的业务调度线程会周期性的收到调度状态检测消息,根据当前各个类型的业务处理实际情况,会将空闲时间较长的的业务类型处理线程减少,最少一类业务保留一个空闲业务处理线程。
8.根据权利要求6所述的一种采用多线程处理业务应用的方法,其特征在于,还包括:当待处理队列的消息数量大于设定的繁忙阈值的时候,业务调度线程使用约定好的外部接口向业务处理消息的发送源反馈业务处理繁忙的信息。
【专利摘要】本发明涉及一种采用多线程处理业务应用的方法,简要包括:创建业务调度线程→创建激活循环业务驱动线程→注册一个调度状态检测的任务→为业务处理类型启动默认或指定的处理线程数量→为每个业务处理线程分配一个无锁队列→选择相对不繁忙的业务处理线程→从自己的无锁队列中获取业务处理消息进行处理→业务处理线程将业务处理消息中的数据区引用计数置零→业务调度线程收到处理完毕返回消息。本发明的有益效果是:根据当前处理能力,控制线程的并发数量,减少不必要的内存拷贝,减少系统锁的使用,运行期间可增加新的业务处理类型,提高系统的业务扩展性,提高系统运行效率及系统对资源使用的伸缩性,缩短业务系统的开发周期。
【IPC分类】G06F9-38
【公开号】CN104834506
【申请号】CN201510247695
【发明人】林皓, 杨华, 杨厂普
【申请人】北京北信源软件股份有限公司
【公开日】2015年8月12日
【申请日】2015年5月15日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1