当前位置: 首页 > news >正文

C++无锁(lock free)队列moodycamel::ConcurrentQueue

moodycamel::ConcurrentQueue介绍

moodycamel::ConcurrentQueue一个用C++11实现的多生产者、多消费者无锁队列。
它具有以下特点:
1.快的让人大吃一惊,详见不同无锁队列之间的压测对比
2.单头文件实现,很容易集成到你的项目中
3.完全线程安全的无锁队列,支持任意线程数的并发
4.用C++11实现,尽可能move元素,而不是copy元素
5.模板化,无需专门处理指针,内部自动管理内存
6.对元素类型或最大计数没有人为限制
7.内存可以预先一次分配,也可以根据需要动态分配
8.跨平台,所有操作都通过标准C++11原语完成
9.支持超快批量操作
10.包括低开销阻塞版本(BlockingConcurrentQueue)
11.异常安全
现实中,很少见到用C++实现的完全无锁队列。Boost有一个——boost::lockfree::queue,但它仅限于具有简单赋值运算符和简单析构函数的对象。Intel的TBB(tbb::concurrent_queue)队列不是无锁的,也需要简单的构造函数。有许多学术论文声称用C++实现了无锁队列,但很难找到可用的源代码,对源码的测试就更难找到了。
这个队列不仅比其他队列(在大多数情况下)具有更少的限制,而且速度更快。它经过了良好的测试,并提供了诸如批量入队/出队等高级功能。
简而言之,在C++开源世界中有一个关于无锁队列的空白,我用我所能做到的最快、最完整、测试良

http://www.lryc.cn/news/360628.html

相关文章:

  • python办公自动化——(二)替换PPT文档中图形数据-柱图
  • vue不同页面切换的方式(Vue动态组件)
  • Linux下Qt Creator无法输入中文(已解决)
  • Codeforces 提交Java代码(自己处理输入输出)
  • 剖析vue中nextTick源码
  • SSM牙科诊所管理系统-计算机毕业设计源码98077
  • 【C++进阶】深入STL之string:模拟实现走进C++字符串的世界
  • go语言linux安装
  • vi和vim有什么不同?
  • CSS动画效果(鼠标滑过按钮动画)
  • 数据结构(C):从初识堆到堆排序的实现
  • ChatGLM3-6B部署
  • 代码随想录35期Day54-JavaScript
  • 把自己的服务器添加到presearch节点
  • Open3D(C++) OTSU点云二值化
  • 浔川python社获得全网博主原力月度排名泸州地区第二名!
  • 第二站:Java——集合框架的深邃海洋(续)
  • linux系统下,mysql增加用户
  • Java数据结构与算法(最长回文子串中心扩散法)
  • 基于Python网络招聘数据可视化分析系统的设计与实现
  • 【Linux】Linux工具——gcc/g++
  • 【惯性传感器imu】—— WHEELTEC的惯导模块的imu的驱动安装配置和运行
  • Linux提权一
  • Vue.js中如何实现以列表首列为表头
  • 如果孙宇晨和贾跃亭能够握手,或许将会上演新的戏码
  • 渲染100为什么是高性价比网渲平台?渲染100邀请码1a12
  • Jenkins流水线pipeline--基于上一章的工作流程
  • 比较Rust和Haskel
  • RedisTemplate的Long类型使用increment自增报错
  • 【代码随想录训练营】【Day 36】【贪心-3】| Leetcode 1005, 134, 135