Mojo 是一个跨平台 IPC 框架,它诞生于 chromium ,用来实现 chromium 进程内/进程间的通信。目前,它也被用于 ChromeOS。

一、Mojo 的分层

从图中看 Mojo 分4层:

  1. Mojo Core: Mojo 的实现层,不能独立使用,由 C++ 实现;
  2. Mojo System API(C): Mojo 的 C API 层,它和 Mojo Core 对接,可以在程序中独立使用;
  3. Mojo System API(C++/Java/JS): Mojo 的各种语言包装层,它将 Mojo C API 包装成多种语言的库,让其他语言可以使用。这一层也可以在程序中独立使用;
  4. Mojo Bindings: 这一层引入一种称为 Mojom 的 IDL(接口定义)语言,通过它可以定义通信接口,这些接口会生成接口类,使用户只要实现这些接口就可以使用 Mojo 进行通信,这一层使得IPC两端不需要通过原始字节流进行通信,而是通过接口进行通信,有点类似 Protobuf 和 Thrift 。

除了上面提到的那些层之外,在 Chromium 中还有2个模块对 Mojo 进行了包装,分别是 Services(//services) 模块和 IPC(//ipc) 模块。

  1. Services: 一种更高层次的IPC机制,构建于Mojo之上,以Service

Chromium Mojo IPC相关推荐

  1. chromium Mojo (译)

    chromium官网对mojo的描述,地址如下,英语不太好,所以进行进行翻译如下: https://chromium.googlesource.com/chromium/src.git/+/51.0. ...

  2. chromium android分析,Chromium Android工程迁移编译过程

    本文从Chromium编译的中间产物入手深入分析.学习Chromium Android版本的工程化定制流程.初始工作依赖于Chromium的ninja.GYP构建系统,在构建完成后基于编译中间产物,迁 ...

  3. Sandbox——沙箱技术,来自chromium开发文档

    沙箱技术早在Windows2000的时候就已经出现了,但是因为大部分的人都不会接触到也没有机会应用这种技术,导致大部分的人根本就对这个没有印象.而在一本讲到沙箱技术的书上,上面的翻译是'沙框',当然这 ...

  4. Chromium的GPU进程启动过程分析

    Chromium除了有Browser进程和Render进程,还有GPU进程.GPU进程负责Chromium的GPU操作,例如Render进程通过GPU进程离屏渲染网页,Browser进程也是通过GPU ...

  5. 【Chromium】【笔记】《Chromium 如何显示 Web 页面》《chromium多进程架构》

    文章目录 原文 How Chromium Displays Web Pages 概念 The render process RenderWidget和RenderView之间有什么区别? 胶水层 gl ...

  6. chromium加载网页

    站在老罗的肩膀上:https://blog.csdn.net/luoshengyang/article/details/50414848 Chromium加载网页的过程,需要Browser进程和Ren ...

  7. Chromium网页加载过程

    Chromium加载网页的过程,需要Browser进程和Render进程协作完成.加载网页的过程由Browser进程发起,向服务器请求网页内容的过程也是由Browser进程完成.Render进程负责对 ...

  8. Chromium多进程架构简要介绍和学习计划

    Chromium以多进程架构著称,它主要包含四类进程,分别是Browser进程.Render进程.GPU进程和Plugin进程.之所以要将Render进程.GPU进程和Plugin进程独立出来,是为了 ...

  9. Chromium多线程模型设计和实现分析

    Chromium除了远近闻名的多进程架构之外,它的多线程模型也相当引人注目的.Chromium的多进程架构是为了解决网页的稳定性问题,而多线程模型则是为了解决网页的卡顿问题.为了达到这个目的,Chro ...

最新文章

  1. 写单元测试应该注意什么
  2. 一文看懂95%置信区间
  3. 【SRM 716 DIV 1 A】 ConstructLCS
  4. 英语口语(每日更新)
  5. MySql 中锁的定义
  6. java 无名类做参数_说说你知道的几种主要的JVM参数
  7. dptcpp 题目 2352: [信息学奥赛一本通-T1440]数的划分-dp
  8. 薪水增长多少,新机会才值得考虑?
  9. IntelliJ IDEA 14.x 创建工作空间与多个Java Web项目
  10. Firefox 使用 Chrome 浏览器的 PDF 和 Flash 插件
  11. 数据可视化的定义及使用注意
  12. Deecamp考试给我的启发
  13. 常用的免费英文电子书
  14. C语言编程入门——HelloWorld!
  15. 前端开发 基础知识 dpi 、 dip 、分辨率、屏幕尺寸、px、density 关系以及换算
  16. 【Altium Designer 19使用教程】Part2 原理图的绘制
  17. %3c php 能用什么代替,Phpwind9
  18. 【Pygamre实战】2023人气超高的模拟经营类游戏:梦想小镇代码版火爆全场,免费体验分享下载哦~
  19. i = i++, i = ++i, j = i++, j = ++i 的区别
  20. 郭天祥单片机编程100例程序及随笔3——定时器编程

热门文章

  1. 【已解决】python永久换源配置失败
  2. 计算机校园网络系统概述,校园计算机网络系统解决方案(含智能化专网)
  3. Amesim学习——热传导基础案例:金和铝的导热性比较
  4. revit学习-基本术语介绍
  5. Sencha SDK 工具之 Slicer 简介
  6. 43岁老程序员的编程之路,我是如何做到退休的?龙叔真的退休了吗?
  7. 巧妙管理 不让IP地址冲突干扰局域网
  8. 技术+服务:警翼智能欲筑高“护城河”
  9. 学习日记(一)利用Arduino Seeeduino XIAO采集加速度信号
  10. spectre13 matlab,惠普全新幽灵系列Spectre 13