[发明专利]多控制器之间任务处理的方法和装置在审
申请号: | 201410392321.0 | 申请日: | 2014-08-11 |
公开(公告)号: | CN104156261A | 公开(公告)日: | 2014-11-19 |
发明(设计)人: | 李美欣 | 申请(专利权)人: | 浪潮(北京)电子信息产业有限公司 |
主分类号: | G06F9/46 | 分类号: | G06F9/46 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 王丹;李丹 |
地址: | 100085 北京市海*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 控制器 之间 任务 处理 方法 装置 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及一种多控制器之间任务处理的方法和装置。
背景技术
设备中控制器控制设备部件正常运行,例如,设备具有单控制器或多控制器来控制该设备的运行,其中单控制器一般称为集中式设备或集中式系统,多控制器一般称为分布式设备或分布式系统。随着计算机行业对控制系统可靠性要求的提高,分布式多控制系统把设备的控制权下发到多个控制器,这种控制方式搭建灵活,而且可以提升设备的可靠性,因此,分布式多控制器系统逐渐树立了核心设备的竞争地位。
多控制器之间协作任务处理在分布式多控制系统中是不可缺少的,但是任务的处理速度与控制器间任务命令的通信相比是很耗时的,即从一个控制器下发一条任务命令到另一个控制器,这个通信过程很快,而大多情况下接到任务命令后控制器按照任务命令把任务处理完成是相对比较慢,因此,快速的任务命令通信与慢速的任务处理之间的矛盾会造成控制器间协作缓慢,进而影响设备的性能。
发明内容
为了解决上述技术问题,本发明提供了一种多控制器之间任务处理的方法和装置,能够解决多控制器之间快速的任务命令通信和慢速的任务处理的矛盾,提高设备的性能。
为了达到本发明目的,本发明提供了一种多控制器之间任务处理的方法,包括:控制器的分发线程接收其他控制器发送来的任务命令消息,其中控制器包括分发线程和线程池,线程池包括至少一个工作线程,分发线程和线程池之间包括任务命令消息队列;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
进一步地,该方法还包括:控制器预先设置分发线程和线程池;根据分发线程接收任务命令的频率和线程池中工作线程处理任务的时长,设置线程池中工作线程的数量。
进一步地,该方法还包括:控制器预先在分发线程与线程池之间设置可共享的任务命令消息队列,所述任务命令消息队列采用链表方式,任务命令消息先进先出;分发线程将接收到的任务命令消息添加到任务命令消息队列中,包括:分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部;工作线程从任务命令消息队列取出任务命令进行任务处理,包括:工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
进一步地,工作线程的起始状态利用条件变量设置成睡眠状态,包括:工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
进一步地,分发线程利用条件变量唤醒工作线程,包括:分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
本发明提供了一种多控制器之间任务处理的装置,包括:分发线程,用于接收其他控制器发送来的任务命令消息;线程池,包括至少一个工作线程,作线程用于任务处理;任务命令消息队列,在分发线程和线程池之间,用于任务命令消息的传递;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
进一步地,该装置还包括:第一设置模块,用于预先设置分发线程和线程池;第一设置模块还用于根据分发线程接收任务命令的频率和工作线程处理任务的时长,设置线程池中工作线程的数量。
进一步地,该装置还包括:第二设置模块,用于预先在分发线程与线程池之间设置任务命令消息队列,任务命令消息队列采用链表方式,任务命令消息先进先出;分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部,工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
进一步地,工作线程的起始状态利用条件变量设置成睡眠状态,包括:工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
进一步地,分发线程利用条件变量唤醒工作线程,包括:分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮(北京)电子信息产业有限公司,未经浪潮(北京)电子信息产业有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410392321.0/2.html,转载请声明来源钻瓜专利网。