![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
apollo
文章平均质量分 95
佛魔是否
这个作者很懒,什么都没留下…
展开
-
【Apollo 6.0】cyber rt协程实现
cyber协程在【Apollo 6.0】 cyber rt是如何使用Reader读取到Writer发送的数据(顶层逻辑) 中,分析到Reader::Init() 的时候,里面使用了协程进行事件处理,那这个协程是怎么实现的呢,这里我们就来分析一下:auto sched = scheduler::Instance();Scheduler* Instance() { Scheduler* obj = instance.load(std::memory_order_acquire); if (obj原创 2022-03-12 15:46:48 · 3124 阅读 · 0 评论 -
【Apollo 6.0】服务发现 cyber rt是如何进行节点间管理的
服务发现在上一章中我们分析了底层通信的流程,其中对于服务发现部分我们没有进行分析,这里我们来分析一下。上一章中对于reader和writer,在init的时候,都会调用JoinTheTopology加入服务的拓扑:void Reader<MessageT>::JoinTheTopology() { // add listener change_conn_ = channel_manager_->AddChangeListener(std::bind( &R原创 2022-03-06 11:20:22 · 1605 阅读 · 0 评论 -
【Apollo 6.0】 cyber rt是如何使用Reader读取到Writer发送的数据(底层逻辑)
Reader是如何读取到Writer的数据(底层逻辑)上一篇文章(上层逻辑)中讲了reader读取数据的流程,但是里面没有讲到底层的Tansport是这么进行进程间通信,这里我们来解析一下。在ReceiverManager::GetReceiver调用了transport::Transport::Instance()->CreateReceiver进行Receiver的创建:template <typename M>auto Transport::CreateReceiver(原创 2022-03-05 23:29:33 · 1888 阅读 · 0 评论 -
【Apollo 6.0】 cyber rt是如何使用Reader读取到Writer发送的数据(顶层逻辑)
Reader是如何读取到Writer的数据(顶层逻辑) 对于reader的创建,一般都是是有Node进行创建,比如说在Component类当中(Component最多可以同时处理四种消息类型,这里我们就选择一种数据类型来讲解):reader = node_->CreateReader<M0>(reader_cfg) 因此我们可以分析Node::CreateReader是如何创建出一个Reader的:template <typename MessageT>au原创 2022-03-05 19:31:32 · 2776 阅读 · 0 评论