[发明专利]一种消息线程挂起时间的动态调节方法有效
申请号: | 201710294607.9 | 申请日: | 2017-04-28 |
公开(公告)号: | CN107122193B | 公开(公告)日: | 2020-09-08 |
发明(设计)人: | 黎邓根;尹安旭;岳龙 | 申请(专利权)人: | 中国中车股份有限公司;湖南中车时代通信信号有限公司 |
主分类号: | G06F9/4401 | 分类号: | G06F9/4401;G06F9/54 |
代理公司: | 上海专利商标事务所有限公司 31100 | 代理人: | 胡林岭 |
地址: | 100036 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 消息 线程 挂起 时间 动态 调节 方法 | ||
本发明提供了一种消息线程挂起时间的动态调节方法,所述方法包括:1)设TS为线程休眠时间;2)令发送消息至队列的频率小于从队列中获取消息处理的频率;3)消息处理不超过允许的消息响应时间,即消息队列中最后一个消息的处理时间达到响应时间要求,则所有消息都满足响应时间要求;4)令线程休眠一段时间后才能继续处理消息,并设置一个线程的最小休眠时间;5)设置一个线程的最长休眠时间;6)对上述步骤进行整理,得到当TS=TSmax_R时线程休眠时间使最长的。
技术领域
本发明涉及消息处理线程,尤其涉及消息线程挂起时间的动态调节。
背景技术
消息处理线程,即连续不断地通过消息循环进行接收消息再进行处理的线程。由于CPU资源有限,一个线程不能一直占用CPU,因此线程在处理完一个消息后,需要挂起,即挂起线程,让其他同优先级线程有机会获取CPU。如此便需要设置一个合理的线程挂起时间,该时间不宜过短或过长。若挂起时间过短,浪费CPU,且会导致其他线程很难抢占CPU;若时间过长,可能导致急需处理的消息需要等待较长时间,从而达不到性能要求,以至于出现队列消息积压的情况发生。
既有的处理方式为根据经验估算或试验一个恒定线程挂起时间,保证处理速率大于接收速率。但是,如果设计改变,这个值可能需要重新估算并测试,并且,估测值没有度量方法用于评价线程分配的挂起时间是否合理,是否符合设计要求(例如响应时间要求)。
发明内容
本发明的目的为提供一种消息线程挂起时间动态调节的方法,使线程的消息处理时间与挂起时间尽可能达到平衡,即以不影响线程处理消息的效率为前提,使线程挂起时间尽可能长,以减少CPU占用时间片,提高CPU的利用率,不依赖于人工估算及降低测试成本。
为了实现上述目的,本发明提供了一种消息线程挂起时间的动态调节方法,其特征在于,所述方法包括以下步骤:
1)设TS为线程休眠时间,单位ms;
2)令发送消息至队列的频率小于从队列中获取消息处理的频率:
f1=f2
f2=1000/(TA+TS)
其中:f1为消息发送频率,即每秒发送至消息队列的消息个数;
f2为消息处理频率,即每秒从消息队列中处理消息个数;
3)消息处理不超过允许的消息响应时间,即消息队列中最后一个消息的处理时间达到响应时间要求,则所有消息都满足响应时间要求,需要满足如下条件:
TD=n*(TS+TA)
n=Q
TD为允许一个消息的最大响应时间(从消息被放入队列,到最后被处理完成),单位毫秒。
n为消息队列中缓存的消息个数;
Q为消息队列最大缓存容量;
4)令线程休眠一段时间后才能继续处理消息,并设置一个线程的最小休眠时间;
TS=TSmin
5)设置一个线程的最长休眠时间;
TS=TSmax
6)对上述步骤进行整理,结果如下:
TSmin_R=TS=TSmax_R
TSmin_R=max(TD/Q–TS,TSmin)
TSmax_R=min(1000/f1–TA,TD/n–TA,TSmax)
以上可知,当TS=TSmax_R时线程休眠时间使最长的。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国中车股份有限公司;湖南中车时代通信信号有限公司,未经中国中车股份有限公司;湖南中车时代通信信号有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710294607.9/2.html,转载请声明来源钻瓜专利网。