本节主要讲mojo IPC进程通信机制。
Chromium默认采用多进程架构,当然,chromium也有singe-process的版本。如果是多线程架构,一个线程崩溃,影响了整个浏览器的使用,因为在现在的网页标准更新了很多个版本,会有不同标准的页面在网络上,极大可能出现解析,渲染,插件等问题,那么对于用户来说,体验就会差很多了,浏览一个页面出问题,就要重启浏览器。而多进程则可以避免此问题,render进程崩溃只会影响当前的tab。

mojo进程通信
进程通信的本质(四个因素):
1、发那些消息(Message Type)
2、消息通道是怎么建立的 (Message Channel)
3、发送者(Sender)
4、接收者(Listener)
一、 Message Type
主要分为两类:“routed” 和 “control”。
1、routed消息
主要是用来给某个RenderViewHost对象发送消息的。不过,任何类都可以通过GetNextRoutingID 和 AddRoute 注册,就能接收routed消息。
2、control消息
control消息有创建pipe的类处理,当然这些类也可以接收routed消息。比如,请求资源或修改剪贴板不是特定于视图的,所以是控制消息。
3、消息的声明
IPC_MESSAGE_ROUTED2(FrameHostMsg_MyMessage, GURL, int) 这个宏用来声明routed消息,这里声明了一个从render进程发送到browser进程的消息,并有一个GURL参

本文深入探讨Chromium的Mojo IPC机制,解释了多进程架构的优势,如防止因线程崩溃影响整个浏览器。Mojo IPC包括消息类型(routed和control)、MessageChannel的创建以及发送者和接收者的角色。Mojo提供了线程安全和高性能的进程间通信,被广泛用于Chromium。ChannelProxy作为消息代理,负责发送和接收工作。
最低0.47元/天 解锁文章
7006

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



