DDS(Data Distribution Service)————Publisher(5) DataWriterQos的LatencyBudgetQosPolicy与ReliabilityQosPolicy详解
5.3.2.5 LatencyBudgetQosPolicy
W a r n i n g : 此功能未实现,需要自己实现 {\color{red}Warning:此功能未实现,需要自己实现} Warning:此功能未实现,需要自己实现
LatencyBudgetQosPolicy
是 DDS (Data Distribution Service) 中的一个 QoS(Quality of Service)策略,用于指定数据传递的延迟预算。这意味着数据从发布者(Publisher)传递到订阅者(Subscriber)之间所允许的最大延迟时间。
属性
duration
: 指定发布者和订阅者之间传递数据的期望最大延迟时间。这是一个Duration_t
类型的值,通常表示为秒和纳秒的组合。
作用
LatencyBudgetQosPolicy
允许应用程序指定数据传递的最大延迟期望值,这对于一些延迟敏感的应用非常重要。例如,在实时系统中,确保数据能够在特定时间内传递是至关重要的。设置合理的延迟预算可以帮助优化数据传输性能和资源使用。
C + + 使用 {\color{green}C++使用} C++使用
LatencyBudgetQosPolicy latencyBudgetQos;
Time_t latencyTime = {5,0};
latencyBudgetQos.duration = latencyTime;
dataWriterQos.latency_budget(latencyBudgetQos);
5.3.2.6 ReliabilityQosPolicy
在 DDS(Data Distribution Service)中,ReliabilityQosPolicy
是一个关键的 QoS 策略,它决定了数据传输的可靠性级别。该策略指定了数据传输过程中是否需要保证数据的可靠传递,并定义了如何处理数据丢失的情况。
ReliabilityQosPolicy 详细解释
ReliabilityQosPolicy
主要有两种模式:
- BEST_EFFORT
- RELIABLE
BEST_EFFORT 模式
- 定义:在
BEST_EFFORT
模式下,数据传输不保证数据一定能到达接收方。数据可能会因为网络问题、资源限制等原因而丢失。 - 应用场景:适用于对数据传输及时性要求高,但对数据丢失不敏感的应用场景。例如,多媒体数据传输、传感器数据流等。
- 特点:传输效率高,延迟低,但可能会有数据丢失。
RELIABLE 模式
- 定义:在
RELIABLE
模式下,数据传输需要保证数据一定能够到达接收方。如果数据在传输过程中丢失,系统会自动进行重传,直到确认数据被接收。 - 应用场景:适用于对数据可靠性要求高的应用场景。例如,金融交易系统、医疗数据传输、指令传输等。
- 特点:传输可靠性高,但可能会增加延迟和资源消耗。
max_blocking_time
- 定义:在 DDS 中,
max_blocking_time
用于控制DataWriter
在无法立即写入数据时阻塞的时间长度。如果在指定的max_blocking_time
内无法写入数据,写入操作将返回错误。这在保证系统实时性和稳定性方面非常重要。
C + + 示例 {\color{green}C++示例} C++示例
ReliabilityQosPolicy reliability;
reliability.kind = BEST_EFFORT_RELIABILITY_QOS;
reliability.kind = RELIABLE_RELIABILITY_QOS;
Time_t max_blocking_time = {5,0};
reliability.max_blocking_time = max_blocking_time;
dataWriterQos.reliability(reliability);