gpt4 book ai didi

c++处理队列溢出

转载 作者:搜寻专家 更新时间:2023-10-31 02:19:21 26 4
gpt4 key购买 nike

我正在创建一个线程,它将数据放入定义如下的消息队列中:

std::deque<struct MessageDetails> MsgQueue;

struct MessageDetails{
char msg[256];
uint64_t Signature;
int32_t Id;
int32_t Mask;
bool Valid;
};

理想情况下,其他模块应该pop 从这个队列中取出数据并处理它。但是对于我的代码中的错误处理,如果另一个模块没有处理任何数据(或处理速度太慢),那么消息队列大小会不断增加,并且可能在某个时间点导致溢出。

我想知道它什么时候会溢出(分配的大小是多少?)我该如何处理?我可以捕获任何错误吗?

最佳答案

您可以尝试在插入出队时添加一个 try catch block :

try {
MsgQueue.insert(xxx)
} catch (std::bad_alloc & e) {
//Add logic to handle queue overflow
}

你也可以做比较

MsQueue.max_size() and MsQueue.size() 

如果没有足够容量试试

MsQueue.resize

关于c++处理队列溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33559746/

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