首页 > 其他分享 >Chromium Mojo通信

Chromium Mojo通信

时间:2023-10-20 14:33:22浏览次数:29  
标签:初始化 handle 使用 通信 Invitation 进程 Chromium Mojo

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进行收发数据了。

标签:初始化,handle,使用,通信,Invitation,进程,Chromium,Mojo
From: https://www.cnblogs.com/rmb999/p/17777030.html

相关文章

  • lorawan.class a与网关通信错位一次
    我的流程就是先收节点数据再发送 发现修改数据后,都延迟了一次。 根硬件厂家沟通。然后确认了这个。说这是classa的特性。就是延迟错位一次。-------------------------------------目瞪狗呆中-------------------------------------- ......
  • 【前端开发】跨标签页广播通信教程,可方便新窗口修改原窗口实时更新
    日常业务开发中我们常常会碰到如下的场景,即两个标签页之间的通信问题。我们在第一个标签页如何执行操作后在第二个标签页获取到信息。 BroadcastChannelAPI为我们提供了一种快捷且高效的途径创建useTagMessage.ts文件//跨标签页通信方案‘Msg’即通道名称,可以是任何你想......
  • Linux-expect(以交互形式输入命令,实现交互通信)
    1.expect简介expect是一种脚本语言,它能够代替人工实现与终端的交互,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。安装命令:yuminstallexpect; 2.expect使用场景(1)并根据预定标准回答其问题,回答“是”、“否”或将控制权交还给您(2)远程连接设备......
  • 14.11 Socket 基于时间加密通信
    在之前的代码中我们并没有对套接字进行加密,在未加密状态下我们所有的通信内容都是明文传输的,这种方式在学习时可以使用但在真正的开发环境中必须要对数据包进行加密,此处笔者将演示一种基于时间的加密方法,该加密方法的优势是数据包每次发送均不一致,但数据包内的内容是一致的,当抓包......
  • Linux进程间通信
    因为进程间具有独立性,你们想用进行进程间通信,难度还是比较大的。进程间通信的本质就是让不同的进程看到同一份资源。为什么要进行进程间通信——交互数据、控制、通知等目标进程间通信的技术背景进程是具有独立性的。虚拟地址空间+页表保证进程运行的独立性(进程内核数据结构+进程......
  • 【通信传输协议】总线协议之SPI
    一、SPI简介串行外设接口serialperipheralinterfacce,是摩托罗拉公司最先推出的一种同步串行传输规范。高速、全双工、同步的串行通信总线。SPI有主从两种模式,通常由一主多从模块组成。SPI通信需要至少4根线,单向传输时3根,MISO(主设备入)、MOSI(主设备出)、SCLK和CS/SS(片选)。 ......
  • 深度学习驱动的交通信号灯检测与识别:实现智能化道路交通管理【人工智能实战】
    随着人工智能的快速发展,基于深度学习的视觉算法在道路交通领域中起到了重要作用。本文将探讨如何利用深度学习技术实现道路交通信号灯的检测与识别,通过多处代码实例展示技术深度。道路交通信号灯是指示交通参与者行驶和停止的重要信号。准确地检测和识别交通信号灯对于智能交通系统......
  • Cef笔记:进程间通信
    原文出处:https://bitbucket.org/chromiumembedded/cef/wiki/GeneralUsage#markdown-header-threadsInter-ProcessCommunication(IPC)SinceCEF3runsinmultipleprocessesitisnecessarytoprovidemechanismsforcommunicatingbetweenthoseprocesses.CefBrowserand......
  • 14.10 Socket 套接字选择通信
    对于网络通信中的服务端来说,显然不可能是一对一的,我们所希望的是服务端启用一份则可以选择性的与特定一个客户端通信,而当不需要与客户端通信时,则只需要将该套接字挂到链表中存储并等待后续操作,套接字服务端通过多线程实现存储套接字和选择通信,可以提高服务端的并发性能,使其能够同......
  • Sentinel源码改造,实现Nacos双向通信!
    SentinelDashboard(控制台)默认情况下,只能将配置规则保存到内存中,这样就会导致SentinelDashboard重启后配置规则丢失的情况,因此我们需要将规则保存到某种数据源中,Sentinel支持的数据源有以下这些:然而,默认情况下,Sentinel和数据源之间的关系是单向数据通讯的,也就是只能先在数......