一、模块(Module)间通讯方式简介
最近一大段的时间任务是做模块(Module)间通讯方案设计,未编码。通过调研,做法如下:
观察者模式
实现思路:维护一个回调函数列表(std::function 或函数指针),广播时循环调用。
优点:简单直接,性能高。
缺点:调用链耦合,容易出现回调地狱,模块之间绑定紧密。
信号槽模式(Qt / boost::signals2)
实现思路:维护一个消息队列,广播时把消息写入多个队列,每个订阅模块消费自己的队列。
优点:解耦,异步处理,支持不同消费速度。
缺点:消息需要复制,内存开销大;实现稍复杂。
事件总线()
实现思路:设计一个统一的 事件总线,模块之间只和总线交互。
事件总线可以支持 同步调用(直接回调)或 异步调用(队列/线程池)。
优点:解耦、扩展性好、支持广播与点对点。
缺点:需要设计完整的调度机制。
常见实现思路:
Apollo CyberRT / ROS2 的进程内 PubSub
一些开源库:
| 库名称 &nbs
模块间通讯方式与事件设计

最低0.47元/天 解锁文章
1887

被折叠的 条评论
为什么被折叠?



