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

2023-10-08 07:44

本文主要是介绍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/163774

相关文章

[Linux]:进程(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 进程终止 1.1 进程退出的场景 进程退出只有以下三种情况: 代码运行完毕,结果正确。代码运行完毕,结果不正确。代码异常终止(进程崩溃)。 1.2 进程退出码 在编程中,我们通常认为main函数是代码的入口,但实际上它只是用户级

java 进程 返回值

实现 Callable 接口 与 Runnable 相比,Callable 可以有返回值,返回值通过 FutureTask 进行封装。 public class MyCallable implements Callable<Integer> {public Integer call() {return 123;}} public static void main(String[] args

C#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

linux中使用rust语言在不同进程之间通信

第一种:使用mmap映射相同文件 fn main() {let pid = std::process::id();println!(

java线程深度解析(二)——线程互斥技术与线程间通信

http://blog.csdn.net/daybreak1209/article/details/51307679      在java多线程——线程同步问题中,对于多线程下程序启动时出现的线程安全问题的背景和初步解决方案已经有了详细的介绍。本文将再度深入解析对线程代码块和方法的同步控制和多线程间通信的实例。 一、再现多线程下安全问题 先看开启两条线程,分别按序打印字符串的

Golang进程权限调度包runtime

关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行GOMAXPROCS:设置最大的可同时使用的 CPU 核数Goexit:退出当前 goroutine(但是defer语句会照常执行)NumGoroutine:返回正在执行和排队的任务总数GOOS:目标操作系统NumCPU:返回当前系统的 CPU 核数量 p

eclipse安装subversion(SVN)版本控制插件

陈科肇 查看插件更新站点 网址:http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA 网站截图: 根据自己的eclipse版本,选择需要的更新站点. 使用eclipse集成subservion插件 Help > Install New Software…> 等待下载安装插件…

如何保证android程序进程不到万不得已的情况下,不会被结束

最近,做一个调用系统自带相机的那么一个功能,遇到的坑,在此记录一下。 设备:红米note4 问题起因 因为自定义的相机,很难满足客户的所有需要,比如:自拍杆的支持,优化方面等等。这些方面自定义的相机都不比系统自带的好,因为有些系统都是商家定制的,难免会出现一个奇葩的问题。比如:你在这款手机上运行,无任何问题,然而你换一款手机后,问题就出现了。 比如:小米的红米系列,你启用系统自带拍照功能后

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位

flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位 一、背景二、定位问题三、解决方法 一、背景 flume系列之:定位flume没有关闭某个时间点生成的tmp文件的原因,并制定解决方案在博主上面这篇文章的基础上,在机器内存、cpu资源、flume agent资源都足够的情况下,flume agent又出现了tmp文件无法关闭的情况 二、

C++及AIDL服务间通信相关

只做细节展示,没有什么逻辑,陆续补充中