apollo cyber
文章平均质量分 70
z996261271
这个作者很懒,什么都没留下…
展开
-
apollo cyber中的协程源码解析
情况,如下图,A、B、C、D 任务在第一个 group 中执行,E在第二个 group 中执行,对于没有出现在配置中的任务,比如F默认会放到第一个 group 中执行(下文会提到哦)。而且配置中我们对于任务进行了优先级设置,A、B、C、D 的任务优先级依次增大,正好对应下图的拓扑依赖关系,在链路中越靠后的任务优先级越高。其实,数据也是这样在任务拓扑图中传递,数据走到最后,执行的任务优先级越高,这是为保证整个流程可以快速走完,不被其他流程的任务打断。根据上面的 conf 文档,可以简单画出任务的。原创 2024-06-17 14:26:19 · 502 阅读 · 0 评论 -
apollo cyber中task_manager源码分析
从上述TaskManager的构造函数可以看出在TaskManager初始化任务的时候会创建scheduler::Instance()->TaskPoolSize()个任务,用户异步协程的运行在用户调用cyber::Async的时候会更具是否处于正式环境调用Enqueue或者std::async函数。cyber::Async在一定意义上不具备真正的实时性,在默认情况下协程的优先级为最低,所以task中添加的任务会在系统空闲的时候在调用。原创 2024-06-17 14:23:05 · 189 阅读 · 0 评论 -
apollo cyber共享内存解析
这里可以看到TryFetch函数会一直调用buffer_的Fetch函数,buffer_是ChannelBuffer类型的成员变量从名字可以看出它是一个数据缓冲区。其中可以看到在不断的通过获取indicator_->next_seq获取消息的序列号,如果有消息到来则通过*info = indicator_->info[idx]获取下一条消息。看到这里可以看到,这里通过第二步中创建的transmitter_的Transmit发送了数据。在这里可以看到其中会先设置Msg_info中的序列号。原创 2024-06-17 13:53:32 · 783 阅读 · 0 评论