gpt4 book ai didi

debugging - 避免消息队列溢出

转载 作者:行者123 更新时间:2023-12-02 17:31:30 25 4
gpt4 key购买 nike

我正在使用 C++ 中的消息队列模板对我的消息进行排队,这恰好对 SIP 消息进行排队。我的队列大小是固定的,当我增加消息的速率和数量时,我能够检测到消息队列中的溢出.

我想避免消息队列溢出。因此,如果有人可以指导我在消息队列中使用实用的溢出避免技术,那将会很有帮助。

也欢迎就流行的 POSIX 消息队列溢出避免提出建议,因为我会从中得到一些想法。

最佳答案

您能够检测到溢出情况,这很棒。接下来您只需要定义溢出时的行为。通常有两种选择:阻止或失败。

溢出时失败很明显,阻塞队列需要互斥锁和条件变量:

std::unique_lock<std::mutex> lock(mutex);
while ( full() ) {
cond.wait_for(lock, std::chrono::microseconds(milliseconds));
// TODO: or define a max wait time and fail accordingly.
};
add(message);
return;

并在队列被消耗且不再溢出时执行cond.notify_one()

关于debugging - 避免消息队列溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32626512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com