Eclipse iceoryx™ - 真正的零拷贝进程间通信

2023-10-10 00:45

本文主要是介绍Eclipse iceoryx™ - 真正的零拷贝进程间通信,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 序言

        通过一个快速的背景教程,介绍项目范围和安装所需的所有内容以及第一个运行示例。

        首先:什么是冰羚?

        iceoryx是一个用于各种操作系统的进程间通信(IPC)中间件(目前我们支持Linux、macOS、QNX、FreeBSD和Windows 10)。它起源于汽车行业,在汽车行业,当涉及到驾驶员辅助或自动驾驶系统时,必须在不同的进程之间传输大量数据。然而,高效的通信机制也可以应用于更广泛的用例,例如在机器人或游戏开发领域。

        iceoryx使用一种真正的零拷贝共享内存方法,允许在没有单个拷贝的情况下将数据从发布者传输到订阅者。这确保了数据传输具有恒定的延迟constant latency,而不管有效负载的大小。有关更多信息,请查看1000字的iceoryx简介。

        中间件是一个混乱的术语,可能是全部,也可能什么都没有。为了更好地了解这对iceoryx意味着什么,请看看我们的目标和非目标。

        将非类型化的C++和C API想象成一个“管道”(“管道”在Git中定义,意思是低级)。我们自己并不使用“管道”API,而是使用类型化的C++API。通常的使用情况是,iceoryx作为高性能IPC传输层集成在一个更大的框架中,并具有额外的API层。这种“美瓷”API的一个例子是ROS 2。

        您可以在上找到完整的API文档🌐 https://iceoryx.io.

2 支持的平台

        自定义iceoryx平台文章中描述了对新平台的修改或添加。

Operating System

操作系统

Compiler

编译器

supports access rights for shared memory

支持共享内存的访问权限

command line parsing

命令行解析

Linux

gcc/clang

yes

yes

QNX

gcc

yes

yes

MacOS

clang

no, not planned for implementation

yes

Windows 10

msvc

no, not planned for implementation

will be implemented

FreeBSD (Unix)

clang

no, not planned for implementation

yes

        一般来说,unix平台应该使用iceoryx,但我们只在CI上测试FreeBSD。

3 Eclipse iceoryx在哪里使用?

Framework

Description

ROS 2

Eclipse iceoryx can be used inside the Robot Operating System with rmw_iceoryx

Eclipse eCAL

Open-source framework from Continental AG supporting pub/sub and various message protocols

RTA-VRTE

AUTOSAR Adaptive Platform software framework for vehicle computer from ETAS GmbH

Cyclone DDS

Performant and robust open-source DDS implementation maintained by ZettaScale Technology

Apex.Ida from Apex.AI

Safe and certified middleware for autonomous mobility systems from Apex.AI

AVIN AGNOSAR Adaptive Platform

AUTOSAR Adaptive Platform Product from AVIN Systems

4 编译和安装

        您可以在此处找到构建和安装指南。

5 例子

        在你构建了所有必要的东西之后,你可以继续使用这些例子。

6 在Docker环境中构建和运行

        如果你想避免在主机上安装任何东西,但你已经安装了Docker,那么可以使用它来构建和运行iceoryx应用程序。

        有关如何做到这一点的信息,请参阅专用的README.md。

7 质量水平和平台

        质量级别为5到1+,其中1+是最高级别。

        请参阅质量声明,了解根据ROS 2指南的质量措施的详细信息。

CMake project/target

Current Level

Target Level QNX

Target Level 
Linux, Windows, macOS

iceoryx_hoofs

2

1+

1

iceoryx_posh

2

1+, 2

1

iceoryx_dust

2

2

2

iceoryx_binding_c

2

2

2

iceoryx_examples

5

4

4

iceoryx_introspection

5

4

4

iceoryx_meta

5

5

5

7 计划中的功能

        了解PLANNED_features.md中即将推出的功能和项目范围。

8 iceoryx实现的绑定和创新

Name

Description

Technologies

iceoryx-rs

Rust binding for iceoryx

Rust

iceoryx-automotive-soa

Binding for automotive frameworks like AUTOSAR Adaptive ara::com

C++

iceoryx-gateway-dds

Gateway for Cyclone DDS

DDS

iceray

An iceoryx introspection client written in Rust

Rust

Larry.Robotics

An iceoryx demonstrator for tinker, thinker and toddler

Demonstrator

这篇关于Eclipse iceoryx™ - 真正的零拷贝进程间通信的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/176736

相关文章

Linux中的进程间通信之匿名管道解读

《Linux中的进程间通信之匿名管道解读》:本文主要介绍Linux中的进程间通信之匿名管道解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基本概念二、管道1、温故知新2、实现方式3、匿名管道(一)管道中的四种情况(二)管道的特性总结一、基本概念我们知道多

Linux进程终止的N种方式详解

《Linux进程终止的N种方式详解》进程终止是操作系统中,进程的一个重要阶段,他标志着进程生命周期的结束,下面小编为大家整理了一些常见的Linux进程终止方式,大家可以根据需求选择... 目录前言一、进程终止的概念二、进程终止的场景三、进程终止的实现3.1 程序退出码3.2 运行完毕结果正常3.3 运行完毕

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

linux本机进程间通信之UDS详解

《linux本机进程间通信之UDS详解》文章介绍了Unix域套接字(UDS)的使用方法,这是一种在同一台主机上不同进程间通信的方式,UDS支持三种套接字类型:SOCK_STREAM、SOCK_DGRA... 目录基础概念本机进程间通信socket实现AF_INET数据收发示意图AF_Unix数据收发流程图A

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

Java中ArrayList的8种浅拷贝方式示例代码

《Java中ArrayList的8种浅拷贝方式示例代码》:本文主要介绍Java中ArrayList的8种浅拷贝方式的相关资料,讲解了Java中ArrayList的浅拷贝概念,并详细分享了八种实现浅... 目录引言什么是浅拷贝?ArrayList 浅拷贝的重要性方法一:使用构造函数方法二:使用 addAll(