news 2026/4/16 11:15:30

moodycamel::ConcurrentQueue 清空队列的方法论

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
moodycamel::ConcurrentQueue 清空队列的方法论

方法1:循环弹出元素

#include<concurrentqueue.h>// 如果存储的是指针类型moodycamel::ConcurrentQueue<int*>queue;int*item=nullptr;while(queue.try_dequeue(item)){if(item){deleteitem;// 如果需要释放内存item=nullptr;}}// 如果存储的是普通类型moodycamel::ConcurrentQueue<int>queue;intitem;while(queue.try_dequeue(item)){// 元素自动销毁}

方法2:批量弹出

#include<concurrentqueue.h>#include<vector>moodycamel::ConcurrentQueue<int>queue;// 批量弹出,效率更高std::vector<int>temp;queue.try_dequeue_bulk(std::back_inserter(temp),queue.size_approx());// temp现在包含所有弹出的元素,随后会被自动销毁temp.clear();// 立即释放内存

方法3:使用交换技巧、或 std::move(…)

// 最简单的方法:创建新队列替换旧队列moodycamel::ConcurrentQueue<int>newQueue;std::swap(queue,newQueue);// 原队列的所有权转移到了newQueue,出作用域时自动销毁

方法4:自定义清空函数(模板)

template<typenameT>voidClearConcurrentQueue(moodycamel::ConcurrentQueue<T>&queue){T item;while(queue.try_dequeue(item)){// 元素自动处理}}// 对于指针类型的特化版本template<typenameT>voidClearConcurrentQueue(moodycamel::ConcurrentQueue<T*>&queue){T*item=nullptr;while(queue.try_dequeue(item)){deleteitem;item=nullptr;}}

线程安全

并发队列,在清空过程中可能有其他线程继续插入元素。如果需要完全清空:

  1. 暂停生产者:确保没有线程在插入
  2. 使用原子标志:协调清空操作
  3. 多次清空:循环清空直到确认队列为空
// 确保队列完全清空的稳健方法voidEnsureQueueEmpty(moodycamel::ConcurrentQueue<int>&queue){intitem;intemptyCount=0;constintMAX_EMPTY_CHECKS=3;while(emptyCount<MAX_EMPTY_CHECKS){if(queue.try_dequeue(item)){emptyCount=0;// 重置计数器}else{emptyCount++;std::this_thread::yield();// 让出CPU}}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 11:05:36

Langchain-Chatchat与Istio服务网格集成:精细化流量治理

Langchain-Chatchat与Istio服务网格集成&#xff1a;精细化流量治理 在企业加速构建AI原生能力的今天&#xff0c;如何在保障数据主权的前提下&#xff0c;将大语言模型&#xff08;LLM&#xff09;系统稳定、可控地接入生产环境&#xff0c;成为技术团队面临的核心挑战。尤其在…

作者头像 李华
网站建设 2026/3/31 19:28:53

Langchain-Chatchat支持哪些文件格式?一文讲清输入源配置

Langchain-Chatchat 支持哪些文件格式&#xff1f;一文讲清输入源配置 在企业知识管理日益复杂的今天&#xff0c;如何让堆积如山的PDF、Word文档和内部手册“开口说话”&#xff0c;成了智能化落地的关键一步。很多团队尝试引入大模型来构建智能问答系统&#xff0c;却发现通用…

作者头像 李华
网站建设 2026/4/16 12:28:17

10 个AI论文工具,助你轻松搞定研究生论文!

10 个AI论文工具&#xff0c;助你轻松搞定研究生论文&#xff01; AI 工具助力学术写作&#xff0c;轻松应对论文挑战 在研究生阶段&#xff0c;论文写作不仅是学术能力的体现&#xff0c;也是对时间与精力的巨大考验。随着人工智能技术的发展&#xff0c;越来越多的 AI 工具被…

作者头像 李华
网站建设 2026/4/16 12:17:42

多线程2——并发和并行

一、多线程1. 并发&#x1f9c1; 并发&#xff08;Concurrency&#xff09;&#xff1a;单核CPU的"多任务切换大师"定义&#xff1a;多个任务在同一时间段内交替执行&#xff0c;看起来像是同时进行&#xff0c;但实际上在任意时刻只有一个任务在执行。生活比喻&…

作者头像 李华
网站建设 2026/4/16 14:00:16

Langchain-Chatchat支持相似问题推荐:提升用户查找效率

Langchain-Chatchat 支持相似问题推荐&#xff1a;提升用户查找效率 在企业知识管理日益复杂的今天&#xff0c;一个常见的场景是&#xff1a;HR部门每天收到数十条“年假怎么申请&#xff1f;”的提问&#xff0c;尽管答案早已写入员工手册。传统知识库系统面对这种高频、多变…

作者头像 李华
网站建设 2026/4/15 20:13:28

AI时代软件测试的必由之路:人机协作深度实践

测试领域的范式转移 在软件测试行业&#xff0c;人工智能&#xff08;AI&#xff09;和自动化工具的崛起正重塑工作流程。据2025年行业报告显示&#xff0c;超过70%的企业已部署AI辅助测试工具&#xff0c;但人类测试人员的角色并未被替代&#xff0c;而是演变为“协作主导者”…

作者头像 李华