15.6.1.3. DataReader上的参数
每个DataReader内部持有一个集合,其中包含有关每个匹配的ReaderResourceLimitsQos的信息。默认情况下,这个集合是完全动态的,这意味着在匹配新的DataWriter时会分配新的内存。然而,DataReaderQos具有一个数据成员reader_resource_limits()
,其类型为ReaderResourceLimitsQos
,允许配置DataReader上的内存分配行为。
ReaderResourceLimitsQos
提供了一个名为matched_publisher_allocation
的数据成员,其类型为ResourceLimitedContainerConfig
,允许配置预期匹配的DataWriters集合的最大大小,以便在初始化DataReader时进行预分配,如下所示。请参阅ResourceLimitedContainerConfig
以获取该数据成员提供的其他配置选项的完整描述。
C++ 示例
DataReaderQos qos;
// 将匹配的DataWriters数量固定为1
// 这将有效地在初始化期间预分配内存
qos.reader_resource_limits().matched_publisher_allocation =
eprosima::fastdds::ResourceLimitedContainerConfig::fixed_size_configuration(1u);
XML 示例
<?xml version="1.0" encoding="UTF-8" ?>
<profiles xmlns="http://www.eprosima.com">
<data_reader profile_name="reader_profile_qos_resource_limit">
<!-- 限制到1个匹配的写入器 -->
<matchedPublishersAllocation>
<initial>1</initial>
<maximum>1</maximum>
<increment>0</increment>
</matchedPublishersAllocation>
</data_reader>
</profiles>
警告
将匹配的DataWriters集合配置为固定大小会有效限制要匹配的数据写入器数量。一旦达到配置的限制,将忽略任何新的DataWriter。在给定示例中,如果出现第四个(可能匹配的)DataWriter,由于集合已经满了,它将不会被匹配。
内容由零声教学AI助手提供,问题来源于学员提问