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

在我们代码应用中,如何使用Mojo来作进程间的通信呢,下面就手把手教你怎么使用Mojo!

1. 初始化 Mojo

初始化Mojo有两种方式,一种适用于静态链接Mojo的程序,一种适用于动态链接Mojo的程序。以下是静态链接时的初始化方法,动态链接时只需要把mojo::core::Init()替换为MojoInitialize()即可。

初始化接口的头文件为:

初始化方法如下:

 2. Mojo C API所在的头文件

 3. 在单进程中使用MessagePipe 发送消息

 4. 在单进程中使用MessagePipe 接收消息

 5. 多进程使用Mojo

一个MessagePipe中有一对handle,分别是handle0和handle1,向其中一个handle写的数据可以从另外一个handle读出来,这是前面已经说过的,如果把其中的一个handle发送到另外一个进程,这一对handle之间依然能够相互收发数据。Mojo提供了多种方法来发送handle到其他的进程,其中最简单的是使用 Invitation。

要在多个进程间使用Mojo,必须先通过Invitation将这些进程“连接”起来,这需要一个进程发送Invitation,另一个进程接收Invitation,发送Invitation的方法如下:

 6. 新进程中接收Invitation的方法

这样就实现了将pipe中的一个handle发送到其他进程了,这两个进程可以开始使用pipe进行收发数据了。

Chromium Mojo通信的更多相关文章

  1. 自己动手实现浏览器,21天自制chromium:起手篇

    转:https://zhuanlan.zhihu.com/p/29101613?utm_medium=social&utm_source=qq 大家好,我又来了.这篇是21天自制原子弹的姐妹篇 ...

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

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

  3. 【Chromium中文文档】跨进程通信 (IPC)

    跨进程通信 (IPC) 转载请注明出处:https://ahangchen.gitbooks.io/chromium_doc_zh/content/zh//General_Architecture/I ...

  4. Mojo For Chromium Developers

    Overview This document contains the minimum amount of information needed for a developer to start us ...

  5. Mojo For Chromium Developers1

    Mojo For Chromium Developers Overview This document contains the minimum amount of information neede ...

  6. [Chromium文档转载,第003章]Proposal: Mojo Synchronous Methods

    Proposal: Mojo Synchronous Methods yzshen@chromium.org 02/02/2016 Overview Currently there are quite ...

  7. [Chromium文档转载,第002章]Mojo C++ Bindings API

    Mojo C++ Bindings API This document is a subset of the Mojo documentation. Contents Overview Getting ...

  8. [Chromium文档转载,第001章] Mojo Migration Guide

        For Developers‎ > ‎Design Documents‎ > ‎Mojo‎ > ‎ Mojo Migration Guide 目录 1 Summary 2 H ...

  9. [Chromium文档转载,第006章]Chrome IPC To Mojo IPC Cheat Sheet

    For Developers‎ > ‎Design Documents‎ > ‎Mojo‎ > ‎ Chrome IPC To Mojo IPC Cheat Sheet 目录 1 O ...

  10. [Chromium文档转载,第005章]Calling Mojo from Blink

    For Developers‎ > ‎Design Documents‎ > ‎Mojo‎ > ‎ Calling Mojo from Blink Variants Let's as ...

随机推荐

  1. 最简单的人脸检测(免费调用百度AI开放平台接口)

    远程调用百度AI开放平台的web服务,快速完成人脸识别 欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos ...

  2. 【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况

    问题描述 在使用Azure Service Bus的时候,我们可以根据Queue中目前存在的消息数来判断当前消息是否有积压的情况. 但是,在Event Hub中,因为所有消息都会被存留到预先设定的保留 ...

  3. 使用 OpenAPI 构建 RESTful API 文档

    作为一名开发者,往往需要编写程序的 API 文档,尤其是 Web 后端开发者,在跟前端对接 HTTP 接口的时候,一个好的 API 文档能够大大提高协作效率,降低沟通成本,本文就来聊聊如何使用 Ope ...

  4. 一行命令使用 Docker 编译 Latex 文件,简单优雅

    使用 Docker 编译 LaTeX 文章 LaTeX 是一种常用的排版系统,它可以帮助用户创建漂亮.专业的文档.但是,安装和配置 LaTeX 比较麻烦,特别是对于初学者而言. Docker 是一个开 ...

  5. Pychrm自定义代码块

    Pycharm -> Perferences (command + ,)

  6. 如何将Maven项目快速改造成一个java web项目(方式二)

    原始的maven项目,使用IDEA打开后,目录结构如下所示 删除pom.xml文件,删除resource目录,将java目录下的代码放到项目根目录下, 将webapp目录放到项目根目录下.如下图所示 ...

  7. vue基本操作[上] 续更----让世界感知你的存在

    Vue引用js文件的多种方式 1.vue-cli webpack全局引入jquery (1)首先 npm install jquery --save (--save 的意思是将模块安装到项目目录下,并 ...

  8. 学习 YAML 语法

    符号 意义 备注 - 表示数组 数组也叫序列 # 表示注释 只支持单行注释 空格缩进 表示层级关系 相同层级左侧必须对齐 --- 表示一份内容的开始 ... 表示一份内容的结束 可省略 : 表示键值对 ...

  9. 【AltWalker】模型驱动:轻松实现自动化测试用例的自动生成和组织执行

    模型驱动的自动化测试 模型驱动的自动化测试(Model-Based Testing, 后文中我们将简称为MBT)是一种软件测试方法,它将系统的行为表示为一个或多个模型,然后从模型中自动生成和执行测试用 ...

  10. cesium中文网

    http://cesium.xin/cesium/cn/Documentation1.62/CallbackProperty.html