注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

gmd20的个人空间

// 编程和生活

 
 
 

日志

 
 

Disruptor的无锁ring buffer queue文档  

2012-12-07 00:35:19|  分类: 程序设计 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

LMAX DisruptorHigh Performance Inter-Thread Messaging Library

http://lmax-exchange.github.com/disruptor/

Java里面的库,感觉 这个利用ring buffer 不需要锁的特点 作为queue用于不同的线程之间传递message的设计,

和 zeromq利用ringbuffer来作为pipe 在不同线程之间传递message的用法都是很类似的。

都是并行编程时避免锁来获得高性能。

这个Disruptor还介绍了ringbuffer在多个生产者和消费者的场合的无锁应用,就是用CAS指令来更新一个序列号。序列号作为访问的游标

,因为用了CAS了就不用锁了。还有批量插入的实现。都是通过修改序列号来实现的,可以参考下面文档。


文档是 http://lmax-exchange.github.com/disruptor/

下了很多高性能队列相关的概念:“ The Cost of Locks”   “CAS” “Memory Barriers”  cpu的 “Cache Lines” 等


根据测试,这个 无锁的ringbuffer的queue 延时 比基于锁的实现平均延时小非常之多。 这个无锁的是 52纳秒,居于锁的是32,757纳秒,好像有500倍以上了吧

  评论这张
 
阅读(985)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017