当前位置:网站首页 > 技术博客 > 正文

有锁和无锁哪个好

atomic_queue

基于带有循环缓冲区的C ++ 14多生产者多消费者

无锁 队列

这些

队列

遵循的主要设计原理是极简主义:原子操作的最基本要求,固定大小的缓冲区,值语义。

这些品质也有局限性:

最大

队列

大小必须在编译时或构造时设置。 循环缓冲区以固定缓冲区大小为代价,回避了基于链表的

队列

中固有的内存回收问题。 有关更多详细信息,请参见。 固定的缓冲区大小可能没有太大的限制,因为一旦

队列

变得大于最大预期大小,这表明存在元素处理速度不够快的问题,并且如果

队列

持续增长,它最终可能会消耗所有可用的内存。可能会影响整个系统,而不仅是有问题的过程。 唯一明显的不便之处是,必须对预期或可接受的最大

队列

大小进行预先的信封后计算。

没有操作系统阻止推送/弹出功能。 此

队列

是为超低延迟方案设计的,使用OS阻塞原语将牺牲一键弹出延迟。 为了获得尽可能低的延迟,人们无法承受OS内核中的阻塞,因为阻塞线程的唤醒延迟约为1-3微秒,而此

队列

的往返时间可以低至150纳秒。

超低延迟应用程序仅需此而已。 极简主义带来了回报,请参阅。

可用的容器有:

AtomicQueue原子元素的固定大小的环形缓

版权声明


相关文章:

  • java注解编程2024-11-23 10:01:03
  • 浏览器性能测试工具2024-11-23 10:01:03
  • 如何建立asc文件2024-11-23 10:01:03
  • windows自动开关机在哪里设置2024-11-23 10:01:03
  • ddos攻击器软件2024-11-23 10:01:03
  • 将驼峰命名的字符串转换为短线命名的字符串2024-11-23 10:01:03
  • linux嵌入式arm开发教程2024-11-23 10:01:03
  • c语言结构体变量的初始化和引用2024-11-23 10:01:03
  • 上网时间流量监控2024-11-23 10:01:03
  • 访问控制和权限管理的区别2024-11-23 10:01:03