3.1.2.2.8. PublishModeQosPolicy
PublishModeQosPolicy
是一种 QoS(服务质量)策略,用于配置 DataWriter
如何发送数据。它还配置了在使用异步发布时要使用的流控制器的名称,该名称应为在创建 DomainParticipant
时注册的流控制器名称。
QoS 策略的数据成员列表:
数据成员名称 | 类型 | 默认值 |
---|---|---|
kind | PublishModeQosPolicyKind |
SYNCHRONOUS_PUBLISH_MODE |
flow_controller_name | 字符串 | FASTDDS_FLOW_CONTROLLER_DEFAULT |
注意: 此 QoS 策略适用于
DataWriter
实体,并且在启用实体上无法更改。
PublishModeQosPolicyKind
此策略有两种可能的值(见 PublishModeQosPolicyKind
):
- SYNCHRONOUS_PUBLISH_MODE: 数据在调用写操作的用户线程上下文中发送。
- ASYNCHRONOUS_PUBLISH_MODE: 内部线程负责异步发送数据,写操作在数据实际发送之前返回。
此外,flow_controller_name
必须设置为有效流控制器描述符的名称。
示例
以下是如何在 C++ 中使用 PublishModeQosPolicy
的示例:
// 此示例仅适用于 DataWriter 实体
DataWriterQos writer_qos;
// 默认情况下构造 PublishModeQosPolicy 时 kind 为 SYNCHRONOUS
// 将 kind 更改为 ASYNCHRONOUS
writer_qos.publish_mode().kind = ASYNCHRONOUS_PUBLISH_MODE;
// 使用修改后的 QoS 创建 DataWriter 实体
writer_ = publisher_->create_datawriter(topic_, writer_qos);
解释
在上述代码中,首先创建一个 DataWriterQos
对象。默认情况下,发布模式被设置为同步模式(即数据会在调用写操作的线程中直接发送)。为了实现异步发布,将其更改为异步模式。这意味着当调用写操作时,不必等待数据实际被发送,从而提高了性能和响应性。
最后,通过调用 publisher_->create_datawriter()
方法并传入修改后的 QoS 设置来创建数据写入器实例。这确保了新创建的数据写入器将以所需的发布模式工作,无论是同步还是异步。
内容由零声教学AI助手提供,问题来源于学员提问