Flow Control Example 说明
eProsima Fast DDS 的流控制示例是一个简单的应用程序,旨在演示流控制器的使用。该示例是由 eProsima 设计的一系列示例中的一部分,目的是通过 eProsima Fast DDS 展示 DDS 部署的特性和可能配置。
示例描述
在 eProsima Fast DDS 中,提供了一种机制来控制由 DataWriter 发送的数据流。流控制是通过称为流控制器的对象实现的。这些控制器在创建 DomainParticipant 时,通过 Flow Controller Descriptor
注册,然后在使用 Publish Mode Qos Policy 创建 DataWriter 时引用。
- Flow Controller Descriptor 是一个简单的结构,唯一地定义了一个流控制器。它包括以下设置和配置:
- 流控制器的名称。
- 流控制器使用的调度策略。
- 每个周期允许发送到网络的最大字节数。
- 流控制器被允许发送最大字节数的时间周期(以毫秒为单位)。
- 发件人线程的设置。
当使用流控制器时,DataWriter 可能需要与优先级和带宽相关的特定参数。有关更多信息,请参考 Flow Controller Settings。
- 属性
fastdds.sfc.priority
用于设置 DataWriter 的优先级,用于HIGH_PRIORITY
和PRIORITY_WITH_RESERVATION
流控制器。允许值从 -10(最高优先级)到 10(最低优先级),默认值为最低优先级。 - 属性
fastdds.sfc.bandwidth_reservation
用于设置 DataWriter 为PRIORITY_WITH_RESERVATION
流控制器请求的带宽百分比。允许值范围从 0 到 100,以总流控限额的一定比例表示。默认情况下,没有为 DataWriter 保留带宽。
一旦实例化,一个流控制器将确保对其处理的数据施加限制,以便在指定时间内不会超过指定大小。
在此示例中,Fast DataWriter 没有流控制器,而 Slow DataWriter 有一个流控制器限制每个周期可以发送的最大字节数,以及允许发送数据所需的时间周期。
关于 DataWriter 类型的信息,无论是快速还是缓慢,都通过发现阶段中的用户数据字段进行通信。这些用户数据嵌入在发现协议中,使网络中的其他参与者能够共享信息,而无需直接通信或配置。有關更多信息,请参阅 UserDataQosPolicy。
如何运行示例
通常,在这个部分会介绍如何构建和运行这个示例,包括所需依赖项、编译步骤和运行命令等。不过具体内容没有提供,需要查阅完整文档或项目说明获取详细指引。
总结
这个示例展示了如何利用 eProsima Fast DDS 的流控功能,可以用来管理实时应用中的数据传输效率,对高效的数据传输至关重要。在多线程或分布式系统中,这样的方法有助于避免数据过载,并保持系统稳定性。如果你需要更深入的信息或者具体代码片段,可以查看官方文档或相关资源。
内容由零声教学AI助手提供,问题来源于学员提问