ZBLOG

15.8.4. Caveats After calling write(), Fast DDS takes ownership of the sample and therefore it is no longer safe to make changes to that sample. If function loan_sample() is called first and the sample is never written, it is necessary to use fu...

15.8.4. Caveats

在调用 write() 函数后,Fast DDS 拥有了样本的所有权,因此不再安全地对该样本进行更改。

如果首先调用了 loan_sample() 函数并且该样本从未被写入,则必须使用 discard_loan() 函数将样本返回给 DataWriter。如果不这样做,后续对 loan_sample() 的调用可能会失败,因为 DataWriter 没有更多的可借用样本。

当前支持的最大样本大小为 uint32_t 的最大值。

15.8.5. Constraints

尽管可以对在同一台机器上运行的一个或多个 Fast DDS 应用程序进程使用零拷贝,但存在一些限制:

  • 仅支持简单类型。

简单类型是指其 CDR 表示与其内存表示匹配的类型。这一要求避免了 CDR 缓冲区和用户缓冲区之间的拷贝,因为数据表示是相同的。因此,仅原始类型(字符串除外)、这些原始类型的数组,以及具有 FINAL 可扩展性和这些原始类型成员的结构被视为简单类型(Fast DDS 还提供了一种 API 来检查定义的类型是否为简单:TypeSupport::is_plain())。

  • 数据共享传输的约束也适用。

注意:

未来版本的 Fast DDS 可能会实现对非简单类型的零拷贝传输支持。

15.8.6. Next steps

一个适用于受支持传输机制的 Hello World 示例可以在 delivery_mechanisms 文件夹中找到。它展示了一个发布者和一个订阅者通过所需传输机制进行通信。只要兼容零拷贝,无论是进程内还是数据共享传输机制都是零拷贝,如果被使用的话。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?