码迷,mamicode.com
首页 > 编程语言 > 详细

ROS取数线程分析(3): 不带组装: readToReadout PollEth分析

时间:2017-03-14 00:02:54      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:分析   ros   blog   导致   nbsp   iss   attr   marker   cli   

http://files.cnblogs.com/files/zengtx/readyToReadout_PollEth.pdf

上图为readyToReadout函数和PollEth()函数的程序流程图。

在单ROS单DataChannel的情况下,buffer一直足够,查看m_statistics->noSpace值,该值一直为0。该值为0是符合逻辑的,因为一个dataChannel , 每收到一个事例,就释放掉该事例占用的buffer。

下面将m_statistics->noSpace挪到m_fragmentsScheduled > 0为False的子句里,用来统计因为PollEth()返回0而导致readyToReadout返回0,无法执行inputFragment读出操作的次数;

另外,由readyToReadout流程图可知,m_statistics->pollRODs 是用来统计满足读数条件(buffer够,PollEth()返回1)的次数,也就是inputFragment的次数。

m_statistics->pollRODs /(m_statistics->noSpace+m_statistics->pollRODs)即为 poll查询出来可读的次数占poll总次数的比例。

 Server "DF" contains 1 object(s):
    DF.ROS.ROS-Eth-00.DataChannel0 <14/3/17 05:48:45.888469> <EthClientSequentialDataChannelInfo>      13 attribute(s):
      fragmentsServed       0
      fragmentsMissed       0
      fragmentsLost         0
      freePages             499
      lastL1IdInput         4294967295
      wrongMarker           0
      wrongSize             0
      multipleFragments     0
      pollRODs              25680001
      pollIRFlags           0
      noSpace               81481268
      fragments_input       0

通过查看is信息:可知单ROS,单dataChannel时,pollRODs/(pollRODs+noSpace)=24%,  就是说select 100次,只有24次会inputFragment, 剩下的76次都将导致readyToReadout返回False, 在单个通道的情况下,取数线程将进入yield,让出CPU的状态。

 

ROS取数线程分析(3): 不带组装: readToReadout PollEth分析

标签:分析   ros   blog   导致   nbsp   iss   attr   marker   cli   

原文地址:http://www.cnblogs.com/zengtx/p/6545337.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!