赞
踩
SysMo是一个用DECLARE_SINGLETON宏实现的单例类,在公开函数cyber::Init里面执行了SysMo::Instance进行实例化,SysMo构造函数执行了自己的Start函数,检测环境变量sysmo_start的值是否为1,若为1则开启一个线程不停的调用scheduler::Instance()->CheckSchedStatus,调用间隔为100毫秒,上述CheckSchedStatus函数执行逻辑是遍历所有执行器的快照状态,是否为空闲,若在干活则输出干了多长时间了以及协程的名字,线程的id。在公开函数cyber::Clear()里面调用了SysMo::CleanUp(),CleanUp会调用SysMo的Shutdown函数,从而释放相关资源。
境变量sysmo_start设置信息在/apollo/cyber/setup.bash里面,里面有一句export sysmo_start=0,将0改写为1重启docker或者执行命令
source /apollo/cyber/setup.bash
即可得到环境变量。查看方式
env | grep "sysmo_start"
整体来看本篇有点灌水,因为整个模块就一个类过于简单,写篇博客去研究大可不必,但是apollo系列文章每周更新一次,已连续7周,本周断更有点难受,本周主要主要更新了/cyber/scheduler模块,没有时间研究更多的源代码,本篇也属于调度机制的模块之一。调度模块研究到此告一段落,接下来的文章研究下apollo的通信机制和原理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。