CN104156261A - 多控制器之间任务处理的方法和装置 - Google Patents
多控制器之间任务处理的方法和装置 Download PDFInfo
- Publication number
- CN104156261A CN104156261A CN201410392321.0A CN201410392321A CN104156261A CN 104156261 A CN104156261 A CN 104156261A CN 201410392321 A CN201410392321 A CN 201410392321A CN 104156261 A CN104156261 A CN 104156261A
- Authority
- CN
- China
- Prior art keywords
- thread
- task
- task order
- order message
- dispatch
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Programmable Controllers (AREA)
Abstract
本发明提供了一种多控制器之间任务处理的方法和装置,其中方法包括:分发线程接收其他控制器发送的任务命令消息,控制器包括分发线程和线程池,线程池包括至少一个工作线程,分发线程和线程池间包括任务命令消息队列;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。本发明能够解决快速任务命令通信和慢速任务处理的矛盾,提高设备的性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种多控制器之间任务处理的方法和装置。
背景技术
设备中控制器控制设备部件正常运行,例如,设备具有单控制器或多控制器来控制该设备的运行,其中单控制器一般称为集中式设备或集中式***,多控制器一般称为分布式设备或分布式***。随着计算机行业对控制***可靠性要求的提高,分布式多控制***把设备的控制权下发到多个控制器,这种控制方式搭建灵活,而且可以提升设备的可靠性,因此,分布式多控制器***逐渐树立了核心设备的竞争地位。
多控制器之间协作任务处理在分布式多控制***中是不可缺少的,但是任务的处理速度与控制器间任务命令的通信相比是很耗时的,即从一个控制器下发一条任务命令到另一个控制器,这个通信过程很快,而大多情况下接到任务命令后控制器按照任务命令把任务处理完成是相对比较慢,因此,快速的任务命令通信与慢速的任务处理之间的矛盾会造成控制器间协作缓慢,进而影响设备的性能。
发明内容
为了解决上述技术问题,本发明提供了一种多控制器之间任务处理的方法和装置,能够解决多控制器之间快速的任务命令通信和慢速的任务处理的矛盾,提高设备的性能。
为了达到本发明目的,本发明提供了一种多控制器之间任务处理的方法,包括:控制器的分发线程接收其他控制器发送来的任务命令消息,其中控制器包括分发线程和线程池,线程池包括至少一个工作线程,分发线程和线程池之间包括任务命令消息队列;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
进一步地,该方法还包括:控制器预先设置分发线程和线程池;根据分发线程接收任务命令的频率和线程池中工作线程处理任务的时长,设置线程池中工作线程的数量。
进一步地,该方法还包括:控制器预先在分发线程与线程池之间设置可共享的任务命令消息队列,所述任务命令消息队列采用链表方式,任务命令消息先进先出;分发线程将接收到的任务命令消息添加到任务命令消息队列中,包括:分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部;工作线程从任务命令消息队列取出任务命令进行任务处理,包括:工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
进一步地,工作线程的起始状态利用条件变量设置成睡眠状态,包括:工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
进一步地,分发线程利用条件变量唤醒工作线程,包括:分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
本发明提供了一种多控制器之间任务处理的装置,包括:分发线程,用于接收其他控制器发送来的任务命令消息;线程池,包括至少一个工作线程,作线程用于任务处理;任务命令消息队列,在分发线程和线程池之间,用于任务命令消息的传递;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
进一步地,该装置还包括:第一设置模块,用于预先设置分发线程和线程池;第一设置模块还用于根据分发线程接收任务命令的频率和工作线程处理任务的时长,设置线程池中工作线程的数量。
进一步地,该装置还包括:第二设置模块,用于预先在分发线程与线程池之间设置任务命令消息队列,任务命令消息队列采用链表方式,任务命令消息先进先出;分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部,工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
进一步地,工作线程的起始状态利用条件变量设置成睡眠状态,包括:工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
进一步地,分发线程利用条件变量唤醒工作线程,包括:分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
与现有技术相比,本发明包括:控制器的分发线程接收其他控制器发送来的任务命令消息,控制器包括分发线程和线程池,线程池包括至少一个工作线程,分发线程和线程池之间包括任务命令消息队列;工作线程的起始状态利用条件变量设置成睡眠状态;分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。本发明通过设置分发线程和线程池,将接收任务命令和处理任务分开到不同的线程,从而解决多控制器之间快速的任务命令通信和慢速的任务处理的矛盾。此外,在分发线程和线程池之间建立可共享的任务命令消息队列,若分发线程接收到来自其他控制器的任务命令,会将任务命令加入到任务命令消息队列中,线程池的工作线程从任务命令消息队列中取出任务命令进行任务处理,因此,分发线程能够及时地对接收到的任务命令进行处理,而不会因为工作线程任务处理时间较长使得控制器之间的任务命令通信成为瓶颈,从而提高设备的性能。
附图说明
图1是本发明多控制器之间任务处理的方法的流程示意图。
图2是本发明多控制器之间任务处理的装置的结构示意图。
具体实施方式
以下将结合附图所示的具体实施方式对本发明进行详细描述。
图1是多控制器之间任务处理的方法的流程示意图,如图1所示,该方法包括:
步骤11,设置分发线程和线程池,该线程池包括至少一条工作线程;
在本步骤中,相对于接收任务命令,处理任务耗时较长,所以控制器将接收任务命令和处理任务分开到不同的线程,具体的,控制器设置分发线程和线程池,其中分发线程接收来自其他控制器的任务命令,并将任务命令进行分发;线程池中的工作线程处理任务。
控制器可以根据分发线程接收任务命令的频率和工作线程处理任务的时长,来设置线程池中工作线程的数量,例如,分发线程每秒接收1个命令任务,工作线程处理1个任务需要10秒,那么线程池中可以设置10~15个工作线程。
步骤12,在分发线程与线程池之间设置任务命令消息队列。
在本步骤中,控制器预先在分发线程与线程池之间建立可共享的任务命令消息队列,该任务命令消息队列采用链表方式,任务命令消息先进先出。
步骤13,工作线程的起始状态利用条件变量设置成睡眠状态。
在本步骤中,工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态
步骤14,分发线程接收其他控制器发送来的任务命令消息,将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程。
在本步骤中,分发线程接收其他控制器发送来的任务命令消息,将接收到的任务命令消息依次添加到任务命令消息队列的尾部。
分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
步骤15,工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
在本步骤中,工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理,直到工作线程发现任务命令消息队列上无任务命令需要处理时,工作线程切换到睡眠状态,一直睡眠到下次被分发线程唤醒。
本发明通过设置分发线程和线程池,将接收任务命令和处理任务分开到不同的线程,从而解决多控制器之间快速的任务命令通信和慢速的任务处理的矛盾。此外,在分发线程和线程池之间建立可共享的任务命令消息队列,若分发线程接收到来自其他控制器的任务命令,会将任务命令加入到任务命令消息队列中,线程池的工作线程从任务命令消息队列中取出任务命令进行任务处理,因此,分发线程能够及时地对接收到的任务命令进行处理,而不会因为工作线程任务处理时间较长使得控制器之间的任务命令通信成为瓶颈,从而提高设备的性能。
图2是本发明多控制器之间任务处理的装置的结构示意图,如图2所示,包括:
第一设置模块,用于设置分发线程和线程池,该线程池包括至少一条处理任务的工作线程。
具体地,第一设置模块可以根据分发线程接收任务命令的频率和工作线程处理任务的时长,设置线程池中工作线程的数量。
第二设置模块,用于在分发线程与线程池之间设置任务命令消息队列。
具体地,预先在分发线程与线程池之间建立可共享的任务命令消息队列,该任务命令消息队列采用链表方式,任务命令消息先进先出。
分发线程,用于接收其他控制器发送来的任务命令消息;
线程池,包括至少一个工作线程,所述工作线程用于任务处理;
任务命令消息队列,在分发线程和线程池之间,用于任务命令消息的传递;
其中,工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态;分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部,并采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程;工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理,直到工作线程发现任务命令消息队列上无任务命令需要处理时,工作线程切换到睡眠状态,一直睡眠到下次被分发线程唤醒。
本发明通过设置分发线程和线程池,将接收任务命令和处理任务分开到不同的线程,从而解决多控制器之间快速的任务命令通信和慢速的任务处理的矛盾。此外,在分发线程和线程池之间建立可共享的任务命令消息队列,若分发线程接收到来自其他控制器的任务命令,会将任务命令加入到任务命令消息队列中,线程池的工作线程从任务命令消息队列中取出任务命令进行任务处理,因此,分发线程能够及时地对接收到的任务命令进行处理,而不会因为工作线程任务处理时间较长使得控制器之间的任务命令消息通信成为瓶颈,从而提高设备的性能。
应当理解,虽然本说明书根据实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用于限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。
Claims (10)
1.一种多控制器之间任务处理的方法,其特征在于,包括:
控制器的分发线程接收其他控制器发送来的任务命令消息,所述控制器包括分发线程和线程池,所述线程池包括至少一个工作线程,所述工作线程的起始状态利用条件变量设置成睡眠状态;所述分发线程和线程池之间包括任务命令消息队列;
所述分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;
所述工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
2.根据权利要求1所述的多控制器之间任务处理的方法,其特征在于,该方法还包括:
控制器预先设置分发线程和线程池;
根据分发线程接收任务命令的频率和线程池中工作线程处理任务的时长,设置线程池中工作线程的数量。
3.根据权利要求1所述的多控制器之间任务处理的方法,其特征在于,该方法还包括:
控制器预先在分发线程与线程池之间设置可共享的任务命令消息队列,所述任务命令消息队列采用链表方式,任务命令消息先进先出;
所述分发线程将接收到的任务命令消息添加到任务命令消息队列中,包括:所述分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部;
所述工作线程从任务命令消息队列取出任务命令进行任务处理,包括:所述工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
4.根据权利要求1所述的多控制器之间任务处理的方法,其特征在于,所述工作线程的起始状态利用条件变量设置成睡眠状态,包括:
所述工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
5.根据权利要求1或4所述的多控制器之间任务处理的方法,其特征在于,所述分发线程利用条件变量唤醒工作线程,包括:
所述分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
6.一种多控制器之间任务处理的装置,其特征在于,包括:
分发线程,用于接收其他控制器发送来的任务命令消息;
线程池,包括至少一个工作线程,所述工作线程用于任务处理;
任务命令消息队列,在分发线程和线程池之间,用于任务命令消息的传递;
所述工作线程的起始状态利用条件变量设置成睡眠状态;所述分发线程将接收到的任务命令消息添加到任务命令消息队列中,并利用条件变量唤醒工作线程;所述工作线程从任务命令消息队列取出任务命令进行任务处理,当任务命令消息队列为空时,工作线程切换到睡眠状态。
7.根据权利要求6所述的多控制器之间任务处理的装置,其特征在于,该装置还包括:
第一设置模块,用于预先设置分发线程和线程池;
第一设置模块还用于根据分发线程接收任务命令的频率和工作线程处理任务的时长,设置线程池中工作线程的数量。
8.根据权利要求6所述的多控制器之间任务处理的装置,其特征在于,该装置还包括:
第二设置模块,用于在分发线程与线程池之间设置任务命令消息队列,所述任务命令消息队列采用链表方式,任务命令消息先进先出;
所述分发线程将接收到的任务命令消息依次添加到任务命令消息队列的尾部,所述工作线程依次从任务命令消息队列的头部取出任务命令进行任务处理。
9.根据权利要求6所述的多控制器之间任务处理的装置,其特征在于,所述工作线程的起始状态利用条件变量设置成睡眠状态,包括:
所述工作线程的起始状态调用pthread_cond_wait消息设置成睡眠状态。
10.根据权利要求6或9所述的多控制器之间任务处理的装置,其特征在于,所述分发线程利用条件变量唤醒工作线程,包括:
所述分发线程采用广播方式,调用pthread_cond_signal消息唤醒线程池中的所有工作线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410392321.0A CN104156261A (zh) | 2014-08-11 | 2014-08-11 | 多控制器之间任务处理的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410392321.0A CN104156261A (zh) | 2014-08-11 | 2014-08-11 | 多控制器之间任务处理的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104156261A true CN104156261A (zh) | 2014-11-19 |
Family
ID=51881767
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410392321.0A Pending CN104156261A (zh) | 2014-08-11 | 2014-08-11 | 多控制器之间任务处理的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104156261A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700949A (zh) * | 2014-11-24 | 2016-06-22 | 中兴通讯股份有限公司 | 一种多核处理器下的数据处理方法及装置 |
CN105868030A (zh) * | 2015-12-22 | 2016-08-17 | 乐视移动智能信息技术(北京)有限公司 | 日志数据的通讯处理装置、方法以及移动终端 |
CN106933681A (zh) * | 2017-02-05 | 2017-07-07 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其*** |
CN108595282A (zh) * | 2018-05-02 | 2018-09-28 | 广州市巨硅信息科技有限公司 | 一种高并发消息队列的实现方法 |
CN109189483A (zh) * | 2018-08-02 | 2019-01-11 | 优视科技新加坡有限公司 | 任务执行的调控方法、装置、设备/终端/服务器及存储介质 |
CN112685100A (zh) * | 2020-12-31 | 2021-04-20 | 深圳市大富网络技术有限公司 | 一种线程启动方法、***及装置 |
US11048568B2 (en) | 2017-03-10 | 2021-06-29 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Broadcast sending control method and apparatus, storage medium, and electronic device |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136930A1 (en) * | 2000-11-21 | 2006-06-22 | Microsoft Corporation | Generic application server and method of operation therefor |
CN101593125A (zh) * | 2009-07-02 | 2009-12-02 | 上海交通大学 | 使用监控线程对二进制翻译程序执行流程动态监控的方法 |
CN102207890A (zh) * | 2011-05-27 | 2011-10-05 | 苏州阔地网络科技有限公司 | 一种任务信息处理方法及调度控制处理装置 |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
US8161163B2 (en) * | 2000-12-28 | 2012-04-17 | Microsoft Corporation | Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client |
-
2014
- 2014-08-11 CN CN201410392321.0A patent/CN104156261A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060136930A1 (en) * | 2000-11-21 | 2006-06-22 | Microsoft Corporation | Generic application server and method of operation therefor |
US8161163B2 (en) * | 2000-12-28 | 2012-04-17 | Microsoft Corporation | Stateless distributed computer architecture with server-oriented state-caching objects maintained on network or client |
CN101593125A (zh) * | 2009-07-02 | 2009-12-02 | 上海交通大学 | 使用监控线程对二进制翻译程序执行流程动态监控的方法 |
CN102207890A (zh) * | 2011-05-27 | 2011-10-05 | 苏州阔地网络科技有限公司 | 一种任务信息处理方法及调度控制处理装置 |
CN102360310A (zh) * | 2011-09-28 | 2012-02-22 | 中国电子科技集团公司第二十八研究所 | 一种分布式***环境下的多任务进程监视方法和监视*** |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105700949A (zh) * | 2014-11-24 | 2016-06-22 | 中兴通讯股份有限公司 | 一种多核处理器下的数据处理方法及装置 |
CN105868030A (zh) * | 2015-12-22 | 2016-08-17 | 乐视移动智能信息技术(北京)有限公司 | 日志数据的通讯处理装置、方法以及移动终端 |
CN106933681A (zh) * | 2017-02-05 | 2017-07-07 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其*** |
CN106933681B (zh) * | 2017-02-05 | 2019-10-11 | 深圳怡化电脑股份有限公司 | 一种多对象阻塞方法及其*** |
US11048568B2 (en) | 2017-03-10 | 2021-06-29 | Guangdong Oppo Mobile Telecommunications Corp., Ltd. | Broadcast sending control method and apparatus, storage medium, and electronic device |
CN108595282A (zh) * | 2018-05-02 | 2018-09-28 | 广州市巨硅信息科技有限公司 | 一种高并发消息队列的实现方法 |
CN109189483A (zh) * | 2018-08-02 | 2019-01-11 | 优视科技新加坡有限公司 | 任务执行的调控方法、装置、设备/终端/服务器及存储介质 |
WO2020026010A3 (zh) * | 2018-08-02 | 2020-03-05 | 优视科技新加坡有限公司 | 任务执行的调控方法、装置、设备/终端/服务器及存储介质 |
CN112685100A (zh) * | 2020-12-31 | 2021-04-20 | 深圳市大富网络技术有限公司 | 一种线程启动方法、***及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104156261A (zh) | 多控制器之间任务处理的方法和装置 | |
CN105204459A (zh) | 基于rfid的柔性加工***及方法 | |
US10139799B2 (en) | Controller to modify an execution condition during program execution | |
US20170329632A1 (en) | Device scheduling method, task manager and storage medium | |
CN103870952A (zh) | 物流***动态优先级调度方法和装置、及物流*** | |
CN105589757A (zh) | 一种服务器架构下的保护工作进程的方法和服务器 | |
EP3079026A3 (en) | Methods for on-process migration from one type of process control device to a different type of process control device | |
US20140196034A1 (en) | Virtual machine control apparatus and virtual machine control method | |
US10735520B2 (en) | Control device, control system, control method, and non-transitory computer-readable storage medium | |
US20140188253A1 (en) | Method and system for reprogramming | |
US20190272197A1 (en) | Control apparatus, control method and non-transitory storage medium | |
CN105892486A (zh) | 数据通信方法、无人飞行器及控制端 | |
US10019292B2 (en) | Method for executing a comprehensive real-time computer application by exchanging time-triggered messages among real-time software components | |
CN102426546A (zh) | 多窗口并发显示方法 | |
CN205353629U (zh) | 无人机用新型遥控器 | |
EP3012700B1 (en) | Programmable controller and control method for programmable controller | |
CN103777618B (zh) | 半导体工艺的指令执行的控制方法及控制装置 | |
EP3569545B1 (en) | A wireless signal device, system and method for elevator service request | |
CN111309014A (zh) | Agv控制方法及装置 | |
CN111919180B (zh) | 输送机***控制器、输送机***和数据同步方法 | |
CN104021041B (zh) | 一种多任务操作环境状态的计算机调度方法 | |
CN103439882A (zh) | 一种控制器参数的调整方法和装置 | |
CN112333679B (zh) | 蓝牙自动连接方法、***、设备及计算机可读存储介质 | |
EP2207070A1 (en) | Field control device and field control method | |
KR20160022722A (ko) | 협업 로봇의 동기화 장치 및 동기화 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141119 |
|
RJ01 | Rejection of invention patent application after publication |