当前位置: 首页 > 软件库 > 大数据 > 数据处理 >

iceoryx

低延迟进程间通信中间件
授权协议 Apache-2.0
开发语言 C/C++
所属分类 大数据、 数据处理
软件类型 开源软件
地区 不详
投 递 者 齐望
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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

iceoryx 使用了真正的零拷贝,共享内存的方法,允许从发布者到订阅者的数据传输,而没有创建单一的副本。这确保了无论有效载荷的大小,数据传输都具有恒定的延迟。

Eclipse iceoryx 可用于以下框架:

ROS 2、eCAL、RTA-VRTE、Cyclone DDS 和 Apex.OS。

  • 在iceoryx中,publisher 获取一块chunk,填充数据,发布;供subscriber 读取。这一系列操作要用到内存管理中的freeList。 FreeList的init() void LoFFLi::init(cxx::not_null<Index_t*> freeIndicesMemory, const uint32_t capacity) noexcept { cxx::

  • 目录 一、概述 二、数据传输机制 三、技术细节 一、概述         iceoryx「冰羚」是由罗伯特·博世公司 (Robert Bosch GmbH) 自动驾驶部门的架构大牛Michael Pöhnl先生发明的;是一种汽车软件的中间件技术,一种典型的进程间通信(IPC)中间件解决方案,基于共享内存的IPC技术;技术特点是:真正的零拷贝、共享内存的数据传输; 现在汽车通信技术都是采用订阅、发布

  • 一辆现代化的汽车包含超过1亿行代码。而且,自动驾驶汽车处理传感器数据必须达到10GB/s,才能实时做出对安全至关重要的决策。所有这些数百万行的代码和数千兆字节的数据都必须高效地处理,以减少发生故障和错误的风险。 因此,汽车软件开发人员必须为自动驾驶汽车提供安全的进程间通信。这就是Eclipse Iceoryx得以开发的原因,也是Eclipse Iceoryx选择使用Helix QAC来帮助确保自动

  • 1.中间件概念 是负责各类应用软件模块之间的通信以及对系统资源的调度, 可以大大降低应用层软件的开发难度, 使研发工程师可以完全把注意力集中到功能算法的开发上。 2.IPC中间件引入背景 自动驾驶的发展带动了系统内部不同进程、线程之间巨量的数据交换,目前这样的通信量能达到 GB/s 以上。汽车中使用的通用通信范例是发布/订阅,最典型的一种支持IPC的中间件解决方案是在传递消息时通过中间件来回拷贝数

  • 一辆现代汽车包含超过一亿行代码。而且,自动驾驶汽车必须处理高达10GB/s的传感器数据,才能做出实时、安全关键的决策。所有这些数以百万计的代码行和千兆字节的数据都必须得到高效和有效的处理,以减少故障和错误的风险。 因此,汽车软件开发人员必须为自动驾驶汽车提供安全的进程间通信。这就是为什么Eclipse Iceryx被开发出来。还有,为什么Eclipse iCoryx选择使用Helix QAC来帮助

  • opensource/iceoryx-2.0.2/iceoryx_hoofs/source/posix_wrapper/mutex.cpp:68 { bool iox::posix::mutex::lock() -> pthread_mutex_lock } ::: [ 22 ] Invalid argument 2023-01-16 20:41:37.824 [ Error ]: ICEORYX

 相关资料
  • 问题内容: 我有一个Java应用程序,通过TCP套接字连接到用C / C ++开发的“服务器”。 应用程序和服务器都在同一台机器上运行,这是一个Solaris机器(但我们正在考虑最终迁移到Linux)。交换的数据类型是简单的消息(登录,登录ACK,然后客户端要求某些内容,服务器答复)。每个消息大约300字节长。 当前,我们正在使用套接字,并且一切都很好,但是我正在寻找使用IPC方法交换数据(更快的

  • 进程间通信 IPC全称Interprocess Communication,指进程间协作的各种方法,当然包括共享内存,信号量或Socket等。 管道(Pipe) 管道是进程间通信最简单的方式,任何进程的标准输出都可以作为其他进程的输入。 信号(Signal) 下面马上会介绍。 消息队列(Message) 和传统消息队列类似,但是在内核实现的。 共享内存(Shared Memory) 后面也会有更详

  • 问题内容: 我正在Linux上的串行端口上实现协议。该协议基于请求应答方案,因此吞吐量受将数据包发送到设备并获得应答所花费的时间限制。这些设备主要基于Arm,并且运行Linux> = 3.0。我无法将往返时间缩短到10ms以下(115200波特,8个数据位,无奇偶校验,每条消息7个字节)。 哪些IO接口将为我带来最低的延迟:选择,轮询,epoll或使用ioctl手动轮询?阻塞或非阻塞IO是否会影响

  • 问题内容: Java上下文中的线程和进程之间有什么区别?用Java如何实现进程间通信和线程间通信?请给我指出一些现实生活中的例子。 问题答案: 根本的区别是线程位于相同的地址空间中,而进程位于不同的地址空间中。这意味着线程间通信是关于传递对对象的引用以及更改共享对象,而进程是关于传递对象的序列化副本。 在实践中,Java线程间通信可以实现为对共享对象进行简单的Java方法调用,并引入适当的同步。或

  • 问题内容: 在以下情况下,实现C ++ / Java IPC的最佳方法是什么? 我有两个程序需要相互通信,一个是用C ++编写的,另一个是用Java编写的。两者都在同一台计算机上运行。 程序相互发送消息。消息通常很短(少于几百个字节),但是大小可能为100KB或更大。 不需要确认消息(即不需要像HTTP这样的请求/响应模型)。例如,C 程序向Java程序发送一条消息,而Java程序可以在以后的某个

  • 问题内容: 我正在用Go编写负载平衡的服务器系统。 负载平衡服务器将与多个应用程序服务器通信并处理请求。这些服务器都可以在同一台计算机或网络上运行。 我已经找到了网络,但是现在我需要找到一种最佳的方式来使负载均衡器与本地应用程序服务器进行通信。使用-networking似乎并非最佳选择。 我正在尝试通过和系统调用共享内存,但是没有找到任何有效的示例,并且该软件包也完全没有文档说明。 有人可以为我提

  • 问题内容: 我遇到需要将命令发送到正在运行的Java应用程序的情况,现在我正在使用tcp / ip套接字使用Internet Explorer上下文菜单项将命令发送到应用程序。但是,一旦应用程序启动,病毒扫描程序就会抱怨该应用程序开始监听,尽管我只是在监听本地连接。我认为这可能会使用户感到困惑。我正在寻找其他方式而又不会惹恼影音扫描器吗? 问题答案: 为此,最好不要使用基于文件的FIFO队列。或使

  • 进程之间用来相互通讯和同步