ZBLOG

The shared memory (SHM) transport enables fast communications between entities running in the same processing unit/machine, relying on the shared memory mechanisms provided by the host operating system. Note Fast DDS utilizes the DomainParticipa...

这段文字介绍了共享内存(Shared Memory,SHM)传输在同一处理单元或机器中运行的实体之间提供快速通信的能力。以下是对各个要点的详细解释:

1. SHM 传输概述

  • 高效通信:共享内存传输利用主机操作系统提供的共享内存机制,可以实现同一机器内部实体之间的快速数据交换。

2. GUID 前缀

  • 参与者识别:Fast DDS 使用 DomainParticipant 的 GuidPrefix_t 来识别同一主机上的对等体。前四个字节相同的两个参与者被视为运行在同一主机上。
  • API 检查:使用 is_on_same_host_as() API 可以检查两个参与者是否在同一主机上。这对于优化和确保数据传递效率非常重要。
  • 注意事项:需要考虑与 GUID 前缀相关的一些限制,特别是在进程间交付(intra-process delivery)时可能出现的问题。

3. 性能优势

SHM 传输相比于其他网络传输(如 UDP 或 TCP),即使在使用回环接口时也能提供更好的性能,主要原因有:

a. 大消息支持

  • 网络协议通常需要将数据分片,以符合特定协议和网络堆栈的要求,这会增加通信开销。而 SHM 传输允许直接复制完整消息,其唯一的大小限制是机器内存容量。因此,对于大消息来说,SHM 可以更有效地处理。

b. 减少内存拷贝

  • 在发送相同消息到多个终端时,SHM 传输可以直接与所有目标终端共享相同的内存缓冲区。其他协议则需要针对每一个终端进行一次内存拷贝,这样会导致额外的性能损失。

c. 更少的操作系统开销

  • 一旦初始设置完成,共享内存传输所需的系统调用显著减少。这意味着 SHM 在数据转移时更加高效,从而提高性能并减少时间消耗。

总结

总之,共享内存传输提供了一种高效、低延迟的数据交流方式,尤其适合于同一台机器上的不同进程之间的数据交换。在性能敏感的应用中,采用 SHM 可以显著改善通信速度和降低资源消耗。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21438

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?