Cyber Classloader : https://zhuanlan.zhihu.com/p/91322837
Cyber Component : https://zhuanlan.zhihu.com/p/116782645
component的工作流程大致如下:
- 通过继承"cyber::Component",用户自定义一个模块,并且实现"Init()"和"Proc()"函数。编译生成".so"文件。
- 通过classloader加载component模块到内存,创建component对象,调用"Initialize()"初始化。(Initialize中会调用Init)
- 创建协程任务,并且注册"Process()"回调,当数据到来的时候,唤醒对象的协程任务执行"Process()"处理数据。(Process会调用Proc)
DataVisitor和DataDispatcher : https://zhuanlan.zhihu.com/p/117318368
数据的访问都是通过"DataVisitor"来实现,数据的分发通过"DataDispatcher"来实现。reader中也是通过DataVisitor来访问数据,在reader中订阅对应的DataDispatcher。
也就是说如果要订阅一个通道,首先是在reader中注册消息的topic,绑定DataDispatcher,之后对应通道的消息到来之后,触发DataDispatcher分发消息,而DataDispatcher通过DataVisitor中的Notify唤醒协程,从DataVisitor中获取消息,并执行协程中绑定的回调函数,以上就是整个消息的收发过程。
数据处理流程 : https://zhuanlan.zhihu.com/p/115046708
imageCyber通信上层:https://blog.csdn.net/qq_25762163/article/details/103803032
Cyber通信底层:https://blog.csdn.net/qq_25762163/article/details/103895527
Cyber C++共享内存通信的实现: https://blog.csdn.net/qq_25762163/article/details/103945289
Apollo 3.5 Cyber 多進程通訊模塊 - Transport (Shared Memory篇):https://blog.csdn.net/weixin_44450715/article/details/86314193
网友评论