Apollo 3.5 Cyber 多進程通訊模塊 - Transport (Intra 和 rtps 篇)

本文介绍了Apollo 3.5中的Cyber多进程通讯模块,重点讨论了Intra模式和RTPS模式。Intra模式主要用于单进程内部通讯,简化了shared memory的操作。RTPS模式涉及实时发布订阅协议,使用eprosima-fast-rtps实现,具备QoS和历史缓存功能。在设置好相应的配置和通道后,Cyber能够利用RTPS进行高效的数据交互。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Apollo 3.5 Cyber 多進程通訊模塊 - Transport (Intra 和 rtps 篇)

https://blog.youkuaiyun.com/weixin_44450715/article/details/86314193

上一篇說完了shared memory篇後,也要把餘下的Intra 和 rtps 篇給補完了

Intra 模式

先說重點,Intra模式不是做多進程通訊的,而是做單進程內部通訊的。
而其架構基本就是把shared memory版本中的所有shared memory操作,線程安全的代碼去掉就是了。
所以一定要先看上一篇

簡單看一下其IntraDispatcherIntraTransmitter就會明白了(IntraReceiver的實現和ShmReceiver是一樣的)

// IntraDispatcher

template <typename MessageT>
void IntraDispatcher::OnMessage(uint64_t channel_id,
                                const std::shared_ptr<MessageT>& message,
                                const MessageInfo& message_info) {
   
   
  if (is_shutdown_.load()) {
   
   
    return;
  }
  ADEBUG << "intra on message, channel:"
         << common::GlobalData::GetChannelById(channel_id);
  ListenerHandlerBasePtr* handler_base = nullptr;
  if (msg_listeners_.Get(channel_id, &handler_base)) {
   
   
    if ((*handler_base)->IsR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值