并发无锁队列学习(一)
来源:互联网 发布:python 字典值为空 编辑:程序博客网 时间:2024/06/09 15:08
1、概述
队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为一种多对多。根据队列中数据分为:队列中的数据是定长的、队列中的数据是变长的。
2、队列操作模型
(1)单生产者——单消费者
(2)多生产者——单消费者
(3)单生产者——多消费者
(4)多生产者——多消费者
3、队列数据定长与变长
(1)队列数据定长
(2)队列数据变长
4、并发无锁处理
(1)单生产者——单消费者模型
此种场景不需要加锁,定长的可以通过读指针和写指针进行控制队列操作,变长的通过读指针、写指针、结束指针控制操作。具体实现可以参考Linux内核提供的kfifo的实现。可以参考:http://blog.csdn.net/linyt/article/details/5764312
(2)(一)多对多(一)模型
正常逻辑操作是要对队列操作进行加锁处理。加锁的性能开销较大,一般采用无锁实现。无锁实现原理是CAS、FAA等机制。定长的可以参考:
http://www.searchtb.com/2012/10/introduction_to_disruptor.html
http://coolshell.cn/articles/8239.html
变长的可以参考intel dpdk提供的rte_ring的实现。
http://blog.csdn.net/linzhaolover/article/details/9771329
- 并发无锁队列学习(一)
- 并发无锁队列学习(数据结构)
- 并发无锁队列学习(数据结构)
- 并发无锁队列学习(数据结构)
- 并发无锁队列学习(概念介绍)
- 并发无锁队列学习之一【开篇】
- 并发无锁队列学习之一【开篇】
- 并发无锁队列学习之一
- 并发无锁队列学习(单生产者单消费者模型)
- 无锁队列(一)
- 无锁并发队列的实现
- 并发无锁环形队列的实现
- 并发无锁队列学习之二【单生产者单消费者】
- 并发队列-无界阻塞优先级队列
- 并发无锁队列UnlockQueue(单生产者单消费者kfifo)
- 眉目传情之并发无锁环形队列的实现
- 基于无锁队列的高并发处理架构
- 从零开始学习EasyDarwin之无锁队列
- lintcode,最长无重复字符的子串
- HDU 3746 字符串匹配(字符串的最小循环节问题)
- 链表中基数排序
- discuz学习记录:在模板文件中显示语言包中的某个值
- iOS 录制视频并上传
- 并发无锁队列学习(一)
- ubuntu16.04 安装 gtk3.0
- 国内一线互联网公司Android内部面试题库
- 水仙花数
- hdu 2108 判断多边形的凹凸
- mysql的基本查询命令大全
- NNU_20161027_PAT1051. 复数乘法
- arm 体系架构下 linux kernel 的系统调用与返回 源码分析与总结
- 结构体对齐方式详解