Apollo CyberRT 深入理解系列

Cyber Classloader : https://zhuanlan.zhihu.com/p/91322837

Cyber Component : https://zhuanlan.zhihu.com/p/116782645

component的工作流程大致如下:

  1. 通過繼承"cyber::Component",用戶自定義一個模塊,并且實(shí)現(xiàn)"Init()"和"Proc()"函數(shù)。編譯生成".so"文件。
  2. 通過classloader加載component模塊到內(nèi)存,創(chuàng)建component對象,調(diào)用"Initialize()"初始化。(Initialize中會調(diào)用Init)
  3. 創(chuàng)建協(xié)程任務(wù),并且注冊"Process()"回調(diào),當(dāng)數(shù)據(jù)到來的時候,喚醒對象的協(xié)程任務(wù)執(zhí)行"Process()"處理數(shù)據(jù)。(Process會調(diào)用Proc)

DataVisitor和DataDispatcher : https://zhuanlan.zhihu.com/p/117318368

數(shù)據(jù)的訪問都是通過"DataVisitor"來實(shí)現(xiàn),數(shù)據(jù)的分發(fā)通過"DataDispatcher"來實(shí)現(xiàn)。reader中也是通過DataVisitor來訪問數(shù)據(jù),在reader中訂閱對應(yīng)的DataDispatcher。

也就是說如果要訂閱一個通道,首先是在reader中注冊消息的topic,綁定DataDispatcher,之后對應(yīng)通道的消息到來之后,觸發(fā)DataDispatcher分發(fā)消息,而DataDispatcher通過DataVisitor中的Notify喚醒協(xié)程,從DataVisitor中獲取消息,并執(zhí)行協(xié)程中綁定的回調(diào)函數(shù),以上就是整個消息的收發(fā)過程。

數(shù)據(jù)處理流程 : https://zhuanlan.zhihu.com/p/115046708

image

Cyber通信上層:https://blog.csdn.net/qq_25762163/article/details/103803032

Cyber通信底層:https://blog.csdn.net/qq_25762163/article/details/103895527

Cyber C++共享內(nèi)存通信的實(shí)現(xiàn): https://blog.csdn.net/qq_25762163/article/details/103945289

Apollo 3.5 Cyber 多進(jìn)程通訊模塊 - Transport (Shared Memory篇):https://blog.csdn.net/weixin_44450715/article/details/86314193

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容