ZBLOG

3.1.2.1.11. OwnershipQosPolicy This QoS Policy specifies whether it is allowed for multiple DataWriters to update the same instance of data, and if so, how these modifications should be arbitrated (see OwnershipQosPolicy). List of QoS Policy dat...

OwnershipQosPolicy 解释

OwnershipQosPolicy 是一种 QoS(Quality of Service)策略,指定是否允许多个 DataWriter 更新同一数据实例。如果允许,则需要规定这些修改如何进行仲裁。以下是该策略的关键内容和组成部分:

QoS 策略数据成员列表

  • Data Member Name: 成员名称
  • Type: 类型
  • Default Value: 默认值
  1. kind
    • 类型: OwnershipQosPolicyKind
    • 默认值: SHARED_OWNERSHIP_QOS

注意事项

  • 此 QoS 策略适用于 Topic、DataReader 和 DataWriter 实体。
  • 一旦实体被启用,该策略无法更改。

警告

为了确保 DataWriters 和 DataReaders 的兼容性,它们必须遵循兼容性规则。有关详细信息,请参见兼容性规则部分。


OwnershipQosPolicyKind

有两个可能的值(见 OwnershipQosPolicyKind):

  1. SHARED_OWNERSHIP_QOS

    • 表示服务不强制每个实例拥有唯一的所有权。在这种情况下,多个 DataWriter 被允许更新同一数据实例,所有更新将对现有的 DataReader 可用。这些更新也受 TimeBasedFilterQosPolicy 或 HistoryQosPolicy 设置的影响,因此可以进行过滤。
  2. EXCLUSIVE_OWNERSHIP_QOS

    • 表示每个实例只能由一个 DataWriter 更新,这意味着在任何时刻,一个单独的 DataWriter 拥有每个实例,并且只有它的修改对现有 DataReaders 可见。所有者可以根据存活 DataWriters 之间的最高权重动态变化,该权重不得违反与数据实例相关的截止合同。权重可以通过 OwnershipStrengthQosPolicy 来更改。如果两个 DataWriters 拥有相同的权重值,则具有较低 GUID 值的数据写入器将成为主题的所有者。

兼容性规则

为了维护 OwnershipQosPolicy 在 DataReaders 和 DataWriters 之间的兼容性,DataWriter 的种类必须等于 DataReader 的种类。

数据写入器种类 数据读取器种类 兼容性
SHARED_OWNERSHIP_QOS SHARED_OWNERSHIP_QOS
SHARED_OWNERSHIP_QOS EXCLUSIVE_OWNERSHIP_QOS
EXCLUSIVE_OWNERSHIP_QOS SHARED_OWNERSHIP_QOS
EXCLUSIVE_OWNERSHIP_QOS EXCLUSIVE_OWNERSHIP_QOS

示例代码

以下是 C++ 中使用 OwnershipQosPolicy 的示例:

// 创建一个数据写入器 Qos 对象
DataWriterQos writer_qos;
// 默认情况下,OwnershipQosPolicy 构造为 kind = SHARED
// 将 kind 更改为 EXCLUSIVE
writer_qos.ownership().kind = EXCLUSIVE_OWNERSHIP_QOS;
// 使用修改后的 QoS 创建对应实体
writer_ = publisher_->create_datawriter(topic_, writer_qos);

在这个例子中,我们首先创建了一个 DataWriter 的 QoS 设置,然后将所有权策略从共享更改为独占,并用此设置来创建数据写入器实体。这表明只有一个写入器能够更新特定的数据实例,其它写入器不能同时进行操作。


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

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

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

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

联系我们

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

微信号:3007537140

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

关注我们
x

注册

已经有帐号?