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.hqwc.cn/news/266586.html

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

相关文章

互联网寒冬,抱团取暖!软件测试十大必问面试题(附答案和解析)

01 介绍之前负责的项目 参考答案:先大概描述一下这个项目是做什么的(主要功能),包括哪些模块,是什么架构的(B/S、C/S、移动端?),你在其中负责哪些模块的测试。期间经历了…

moviepy基本参数用法大全

阅读本文档的前置说明: 本文档用于讲解Python的moviepy库的自带函数的用法,主要目的是讲一下每个函数的每个参数的含义,无需一开始就全部掌握,粗略看一下就行,可以在后面自己开发过程,遇到不会用的函数再回…

开关量防抖滤波器(梯形图和SCL源代码)

模拟量防抖超限报警功能块请查看下面文章链接: https://rxxw-control.blog.csdn.net/article/details/133969425https://rxxw-control.blog.csdn.net/article/details/133969425 1、开关量防抖滤波器 2、防抖滤波 3、梯形图代码

避碰规则_避碰与信号

第一章 总则 第二章 航行和避让 第一节 行动通则 第二节 机动船相遇,存在碰撞危险时的避让行动 第三节 机动船、人力船、帆船、排筏相遇,存在碰撞危险时的避让行动 第四节 船舶在能见度不良时的行动及其他 第三章 号灯和号型 1

【C++11】lambda表达式及包装器

一.lambda表达式 1.可调用对象 可调用对象即可以像函数一样被调用的对象,有以下三种: 函数(指针)仿函数对象lambda表达式 tips:调用函数时,既可以用函数名,也可以用函数地址,因为函数名和函数地址是一回事…

xtts和ogg不选择?

不选择ogg的理由: 1.需要在源端创建用户赋权,启用数据库最小日志,附加日志等操作--对生产影响较大 2.外键约束过多,割接启用可能很慢https://www.modb.pro/db/201126--割接停机时间影响 3.初始化配置expdp导出可能快照过旧&#x…

Python3+requests接口自动化session操作方法

在进行接口自动化测试时,有好多接口都基于登陆接口的响应值来关联进行操作的,在次之前试了很多方法,都没有成功,其实很简单用session来做。 1、在登陆接口创建一个全局session 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 # -*- co…

关于个人职业选择

职业选择,一直是个老生常谈的话题。这并不是一个容易做的决定。 让我们来看看AI怎么说。 首先是方向性的回答: 然后是一些具体的回答 我个人比较倾向于深耕网络安全。这是一个很有趣也是一个持续发展着的领域。 不知道关于这个事情你怎么看&#xff0…

代码随想录刷题题Day10

刷题的第十天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day10 任务 ● 239. 滑动窗口最大值 ● 347.前 K 个高频元素 ● 总结 1 滑动窗口最大值 思路: 滑动窗口最大值是…

LangChain(0.0.340)官方文档八:Retrieval——Document transformers

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、Text splitters1.1 快速开始(RecursiveCharacterTextSplitter)1.2 MarkdownHeaderTextSplitter1.2.1 按结构拆分md文件1.2.2 继续分割 Markdown gr…

2、Redis变慢原因排查(下)

感觉Redis变慢了,这些可能的原因你查了没 ?(下) Redis变慢排查的上一篇【感觉Redis变慢了,这些可能的原因你查了没 ?(上)】,我们是基于Redis命令为入口,比如命令使用不得当,bigkey问题&#xf…

Java - JVM内存区域的划分

Java 程序运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。 分配:通过关键字new创建对象分配内存空间,对象存在堆中。 释放 &…