fastdds共享内存实现原理

在这里插入图片描述
fastdds 共享内存分两个部分,一部分用于保存数据,一部分用于通信。
fastrtps_+“UUID”:共享内存包括又两部分数据,BufferNode和segment_size,
用配置文件port_queue_capacity_指定BufferNode的数量,segment_size用于保存实际传输的数据。
fastrtps_port+“port_id”:用于控制发送的数据,包含循环队列MultiProducerConsumerRingBuffer,队列中包含共享内存Node成员,共享内存Cell[port_queue_capacity_]数组。

当发送数据时,首先在segment_size中申请内存(申请BufferNode用于保存申请offset、size、引用计数),拷贝到segment里,生成SharedMemManager::Buffer &buffer对象。
然后找到对应port,调用try_push函数,并转换成BufferDescriptor,push到RingBuffer中。

数据接收,会打开OpenInputChanenl,打开多个port接收数据。并保存到input_channels_的vector中,每个port启动单独线程等待从MultiProducerConsumerRingBuffer队列中pop数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/214656.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智物发布MT6877平台无线AR智能眼镜参考设计,推动下一代无线AR发展

随着增强现实(AR)技术的不断发展,有线AR眼镜在连接和使用方面存在一些限制。为了解决这些问题,无线AR智能眼镜的推出势在必行。 新一代无线AR智能眼镜采用了天玑900(MT6877)平台作为参考设计,搭载了2.4GHz的八核处理器…

【rabbitMQ】Exchanges交换机

上一篇:springboot整合rabbitMQ模拟简单收发消息 https://blog.csdn.net/m0_67930426/article/details/134904766 本篇代码基于上一篇继续写 目录 Fanout 交换机 1. add queue 2. add Exchange 3.绑定队列 Direct 交换机 1. add queue 2. add Exchange 3.…

011 数据结构_哈希

前言 本文将会向你介绍哈希概念,哈希方法,如何解决哈希冲突,以及闭散列与开散列的模拟实现 1. 哈希概念 顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经…

CyclicBarrier、CountDownLatch、Semaphore 的用法

CyclicBarrier、CountDownLatch、Semaphore 的用法 CountDownLatch(线程计数器 ) CountDownLatch 类位于 java.util.concurrent 包下,利用它可以实现类似计数器的功能。比如有一个任务 A,它要等待其他 4 个任务执行完毕之后才能执…

数据结构与算法-Rust 版读书笔记-2线性数据结构-队列

数据结构与算法-Rust 版读书笔记-2线性数据结构-队列 1、队列:先进先出 队列是项的有序集合,其中,添加新项的一端称为队尾,移除项的另一端称为队首。一个元素在从队尾进入队列后,就会一直向队首移动,直到…

鸿蒙原生应用再添新丁!同花顺入局鸿蒙

鸿蒙原生应用再添新丁!同花顺入局鸿蒙 来自 HarmonyOS 微博12月11日消息,同花顺已完成#鸿蒙原生应用#beta版本,并正在进行全量版本开发,进一步丰富了#鸿蒙原生应用#的覆盖领域。同花顺作为股民和券商首选的一站式金融理财服务平台…

扩展学习|商业智能和分析:从大数据到大影响

文献来源:Chen H, Chiang R H L, Storey V C. Business intelligence and analytics: From big data to big impact[J]. MIS quarterly, 2012: 1165-1188. 下载链接:https://pan.baidu.com/s/1JoHcTbwdc1TPGnwXsL4kIA 提取码:a8uy 在不同的组…

Vue-第七天

智慧商城项目: 1.创建项目选项: 2.调整: 主要是增加两个文件夹,删除倒是没什么 3.组件库(vant-ui): 点击进入官网:Vant 2 - Mobile UI Components built on Vue 4.导入: 全部导入…

MES系统需要具备哪些性能方面的需求?

MES系统需要具备哪些“性能需求”?关于这个问题,我觉得有必要先和大家解释一下,到底什么是性能需求?性能需求在MES系统的作用是什么?讲明白了这2点,问题自然而然就解决了。 什么是性能需求? 通…

选择最适合您的数据集成工具

个人 对于个人而言,选择最适合的数据集成工具可能会有一些不同的考量因素。以下是一些个人选择数据集成工具时可能需要考虑的因素: 技术水平和经验: 如果个人具有较深的技术水平和经验,可能更倾向于选择功能丰富、灵活性强的数据…

自编码器 AutoEncoder

自编码器(AutoEncoder),也称自编码模型,是一种基于无监督学习的数据维度压缩和特征表示方法,目的是对一组数据学习出一种表示。1986年 Rumelhart 提出自编码模型用于高维复杂数据的降维。由于自动编码器通常应用于无监…

《PySpark大数据分析实战》-02.了解Hadoop

📋 博主简介 💖 作者简介:大家好,我是wux_labs。😜 热衷于各种主流技术,热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员(PCTA)、TiDB数据库专家(PCTP…

云降水物理基础

云降水物理基础 云的分类 相对湿度变化方程 由相对湿度的定义,两边取对数之后可以推出 联立克劳修斯-克拉佩龙方程(L和R都为常数) 由右式看出,增加相对湿度的方式:增加水汽(de增大)和降低…

开源好用EasyImages简单图床源码

源码介绍 开源好用EasyImages简单图床源码分享,虽然它是开源程序,但功能一点也不弱,不仅支持多文件上传、文字/图片水印、支持API和鉴黄、还能自定义代码,最重要的是它不强制使用数据库运行,这就给我们的部署和维护带…

人工智能的技术演进与未来趋势

人工智能的技术演进与未来趋势 一、引言 人工智能(AI)已经成为当今科技领域的热门话题,其在各个行业的应用越来越广泛。从智能语音助手到自动驾驶汽车,从智能家居系统到医疗诊断,AI技术已经深入到我们的日常生活。在…

OpenVINS学习2——VIRAL数据集eee01.bag运行

前言 周末休息了两天,接着做上周五那个VIRAL数据集没有运行成功的工作。现在的最新OpenVINS需要重新写配置文件,不像之前那样都写在launch里,因此需要根据数据集情况配置好estimator_config.yaml还有两个标定参数文件。 VIRAL数据集 VIRAL…

WooCommerce商城个人微信支付网关 适合个人微信收款

点击获取WooCommerce商城个人微信支付网关 适合个人微信收款原文https://gplwp.eastfu.com/product/woocommerce-ge-ren-wei-xin-zhi-fu-wang-guan-shi-he-ge-ren/ 个人微信支付网关接口,无需提现,100%资金安全,官方清算,金额无限…

XCube——用于超高分辨率 3D 形状和场景的生成模型!

他们的方法在稀疏体素网格的层次结构上训练潜在扩散模型的层次结构。他们在稀疏结构 VAE 的潜在空间上进行扩散,它为层次结构的每个级别学习紧凑的潜在表示。 XCube 是稀疏体素层次上的分层潜在扩散模型,即从粗到细的 3D 稀疏体素网格序列,使…

智能优化算法之粒子群模型(含python案例代码)

粒子群优化模型概述 粒子群优化(Particle Swarm Optimization,简称PSO)是一种基于群体智能的优化算法,最早由美国社会心理学家James Kennedy和Russell Eberhart于1995年提出。PSO的灵感来自鸟群和鱼群等自然界群体行为的观察。 PS…

Linux驱动入门——编写第一个驱动

目录 前言 驱动入门知识 1.APP 打开的文件在内核中如何表示 2.打开字符设备节点时,内核中也有对应的 struct file 编写 Hello 驱动程序步骤 1.流程介绍 2.驱动代码: 3.应用层代码: 4.本驱动程序的 Makefile 内容: 5.上机…