如何实现一个支持并发的无锁队列实现

经常看到关于无锁队列的在多线程中应用,这种队列既然无锁,那么如何能保证线程的同步安全问题呢?它的实现机制是什么?对它的应用有什么特定的要求吗?
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
在网上google到了一篇文章,讲的是在java下的实现,可以参考下。
无锁队列本质上还是有锁,只不过锁的粒度很小,通常是一个标志。一般通过CAS(compare&set)和TAS(test&set)等原子操作结合忙等待实现的。既然是忙等待那么适用于共享资源不会被长时间占据的情况。
我知道的就是设置一个标志,当这个标志为true时可以访问这个资源,false时不可访问,每次访问之前判断下
无锁的前题就是读与写不在同一个元素上,如果说同一个元素那还是有锁的。只要谈到并发离不开锁。
java.util.concurrent 这个包下有些应用于并发处理的collection类。无锁指的是没有用java的对象锁吧,java的并发集合类的实现原理基于将赋值操作放到更小粒度的操作中,由jvm提供一个原子操作(CAS, compare and swap,compare操作是原子的)实现,简单说就是赋值后检查是否赋值成功(变量在此期间有没有被并发修改),赋值成功则返回,否则继续尝试赋值直到成功。java并发编程实践 这书里有详细介绍。关于 CAS:http://publib.boulder.ibm.com/infocenter/iseries/v5r3/index.jsp?topic=%2Frzahw%2Frzahwrzahwcascasco.htm
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (10269) 次数据结构(3)
  队列在计算机中非常重要的一种数据结构,尤其在操作系统中。队列典型的特征是先进先出(FIFO),符合流水线业务流程。在进程间通信、网络通信之间经常采用队列做缓存,缓解数据处理压力。结合自己在工作中遇到的队列问题,总结一下对不同场景下的队列实现。根据操作队列的场景分为:单生产者——单消费者、多生产者——单消费者、单生产者——多消费者、多生产者——多消费者四大模型。其实后面三种的队列,可以归纳为一种多对多。根据队列中数据分为:队列中的数据是定长的、队列中的数据是变长的。
2、队列操作模型
(1)单生产者——单消费者
(2)多生产者——单消费者
(3)单生产者——多消费者
(4)多生产者——多消费者
3、队列数据定长与变长
(1)队列数据定长
(2)队列数据变长
4、并发无锁处理
(1)单生产者——单消费者模型
  此种场景不需要加锁,定长的可以通过读指针和写指针进行控制队列操作,变长的通过读指针、写指针、结束指针控制操作。具体实现可以参考linux内核提供的kfifo的实现。可以参考:
(2)(一)多对多(一)模型
  正常逻辑操作是要对队列操作进行加锁处理。加锁的性能开销较大,一般采用无锁实现。无锁实现原理是CAS、FAA等机制。定长的可以参考:
变长的可以参考intel dpdk提供的rte_ring的实现。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:169336次
积分:2233
积分:2233
排名:第19123名
原创:12篇
转载:216篇
评论:22条
(1)(3)(1)(1)(1)(2)(3)(1)(1)(6)(14)(1)(8)(6)(11)(2)(7)(24)(2)(42)(8)(13)(11)(1)(5)(7)(1)(1)(1)(16)(3)(4)(4)(2)(12)(2)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'主题信息(必填)
主题描述(最多限制在50个字符)
申请人信息(必填)
申请信息已提交审核,请注意查收邮件,我们会尽快给您反馈。
如有疑问,请联系
CSDN &《程序员》研发主编,投稿&纠错等事宜请致邮
你只管努力,剩下的交给时光!
如今的编程是一场程序员和上帝的竞赛,程序员要开发出更大更好、傻瓜都会用到软件。而上帝在努力创造出更大更傻的傻瓜。目前为止,上帝是赢的。个人网站:www.xttblog.com。个人QQ群:、
个人大数据技术博客:http://www.iteblog.com多线程并发访问无锁队列的算法研究_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
多线程并发访问无锁队列的算法研究
&&多线程并发访问无锁队列的算法研究
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 无锁队列实现原理 的文章

 

随机推荐