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助手提供,问题来源于学员提问


 
                             
         
        
 
         
         
         
         
         
         
         
        
 
                 
                 
                 
                 
                 
                 
                 
                