并发设计
文章平均质量分 81
Adam040606
这个作者很懒,什么都没留下…
展开
-
剖析Disruptor:为什么会这么快?(二)神奇的缓存行填充
转自:http://ifeve.com/disruptor-cacheline-padding/我们经常提到一个短语Mechanical Sympathy,这个短语也是Martin博客的标题(译注:Martin Thompson),Mechanical Sympathy讲的是底层硬件是如何运作的,以及与其协作而非相悖的编程方式。我在上一篇文章中提到RingBuffer后,我们收转载 2015-07-30 10:53:55 · 327 阅读 · 0 评论 -
LINUX内核之内存屏障
@CopyLeft by ICANTH,I Can do ANy THing that I CAN THink!~Author: WenHui, WuHan University,2012-6-4 源地址: http://www.cnblogs.com/icanth/archive/2012/06/10/2544300.html内存屏障(Memory Barriers)转载 2016-03-15 15:36:08 · 543 阅读 · 0 评论 -
spinlock剖析与改进
转自:http://www.searchtb.com/2011/06/spinlock%E5%89%96%E6%9E%90%E4%B8%8E%E6%94%B9%E8%BF%9B.html1, spinlock介绍spinlock又称自旋锁,线程通过busy-wait-loop的方式来获取锁,任何时刻时刻只有一个线程能够获得锁,其他线程忙等待直到获得锁。spinlock在多处理器转载 2016-03-16 10:54:39 · 501 阅读 · 0 评论 -
《LINUX3.0内核源代码分析》第三章:内核同步(1)
转自:http://blog.chinaunix.net/uid-25845340-id-3011577.html摘要:本文主要讲述linux如何处理ARM cortex A9多核处理器的内核同步部分。主要包括其中的内存屏障、原子变量、每CPU变量。自旋锁、信号量、complete、读写自旋锁、读写信号量、顺序锁、RCU放在后文介绍。法律声明:《LINUX3.0内核源代码分析》系列转载 2016-03-15 18:41:08 · 741 阅读 · 0 评论 -
Cassandra中Gossip具体实现方式
转自:http://blog.csdn.net/zhangzhaokun/article/details/5859760(一)Gossip的作用Cassandra集群没有中心节点,各个节点的地位完全相同,它们通过一种叫做gossip的协议维护集群的状态。 通过gossip,每个节点都能知道集群中包含哪些节点,以及这些节点的状态,这使得Cassandra集群中的任何一个节点都可以转载 2016-01-27 21:38:22 · 545 阅读 · 0 评论 -
cassandra 之 gossip实现
转自:http://blog.163.com/liaoxiangui@126/blog/static/795696402012123113540670/1 概述本文的描述基于cassandra 0.6.3 源代码。gossip协议解决了在分布式环境中,如何使用最少的网络带宽,达到数据同步的目的。同步的数据包括:集群中有哪些节点以及这些节点的状态。重点提示:节点只能更新属于自转载 2016-01-27 21:37:01 · 738 阅读 · 0 评论 -
CPU缓存刷新的误解
转自:http://ifeve.com/cpu-cache-flushing-fallacy-cn/即使是资深的技术人员,我经常听到他们谈论某些操作是如何导致一个CPU缓存的刷新。看来这是关于CPU缓存如何工作和缓存子系统如何与执行核心交互的一个常见误区。本文将致力于解释CPU缓存的功能以及执行程序指令的CPU核心如何与缓存交互。我将以最新的Intel x86 CPU为例进行说明,其他CPU也转载 2015-08-04 16:59:04 · 605 阅读 · 0 评论 -
并发框架Disruptor译文
转自:http://ifeve.com/disruptor/Martin Fowler在自己网站上写了一篇LMAX架构的文章,在文章中他介绍了LMAX是一种新型零售金融交易平台,它能够以很低的延迟产生大量交易。这个系统是建立在JVM平台上,其核心是一个业务逻辑处理器,它能够在一个线程里每秒处理6百万订单。业务逻辑处理器完全是运行在内存中,使用事件源驱动方式。业务逻辑处理器的核心是Dis转载 2015-07-30 11:34:10 · 359 阅读 · 0 评论 -
由一道淘宝面试题到False sharing问题
转自:http://blog.csdn.net/wdzxl198/article/details/11218765今天在看淘宝之前的一道面试题目,内容是在高性能服务器的代码中经常会看到类似这样的代码:[cpp] view plaincopytypedef union { erts_smp_rwmtx_t rwm转载 2015-07-30 12:30:54 · 653 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(四)Ringbuffer的特别之处
转自:http://ifeve.com/dissecting-disruptor-whats-so-special/最近,我们开源了LMAX Disruptor,它是我们的交易系统吞吐量快(LMAX是一个新型的交易平台,号称能够单线程每秒处理数百万的订单)的关键原因。为什么我们要将其开源?我们意识到对高性能编程领域的一些传统观点,有点不对劲。我们找到了一种更好、更快地在线程间共享数据的转载 2015-07-30 11:29:03 · 487 阅读 · 0 评论 -
False Sharing问题
转自:http://blog.csdn.net/pennyliang/article/details/5766541在多处理器,多线程情况下,如果两个线程分别运行在不同的CPU上,而其中某个线程修改了cache line中的元素,由于cache一致性的原因,另一个线程的cache line被宣告无效,在下一次访问时会出现一次cache line miss,哪怕该线程根本无效改动的这个元转载 2015-07-30 10:25:46 · 451 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(三)揭秘内存屏障
转自:http://ifeve.com/disruptor-memory-barrier/最近我博客文章更新有点慢,因为我在忙着写一篇介绍内存屏障(Memory Barries)以及如何将其应用于Disruptor的文章。问题是,无论我翻阅了多少资料,向耐心的Martin和Mike请教了多少遍,以试图理清一些知识点,可我总是不能直观地抓到重点。大概是因为我不具备深厚的背景知识来帮助我透转载 2015-07-30 11:21:09 · 333 阅读 · 0 评论 -
剖析Disruptor:为什么会这么快?(一)锁的缺点
转自:http://ifeve.com/locks-are-bad/Martin Fowler写了一篇非常好的文章,里面不仅提到了Disruptor,而且还解释了Disruptor 如何应用在LMAX的架构里。里面有提及了一些目前没有涉及的概念,但最经常问到的问题是 “Disruptor究竟是什么?"。目前我正准备在回答这个问题,但首先回答"为什么它会这么快?"这些转载 2015-07-30 09:53:45 · 375 阅读 · 0 评论 -
理解 Memory barrier(内存屏障)
转自:http://name5566.com/4535.html参考文献列表:http://en.wikipedia.org/wiki/Memory_barrierhttp://en.wikipedia.org/wiki/Out-of-order_executionhttps://www.kernel.org/doc/Documentation/memory-barrier转载 2015-07-31 13:47:45 · 1025 阅读 · 0 评论 -
Disruptor(无锁并发框架)-发布
转自:http://ifeve.com/the-disruptor-lock-free-publishing/假如你生活在另外一个星球,我们最近开源了一套高性能的基于消息传递的开源框架。下面我给大家介绍一下如何将消息通过Ring buffer在无锁的情况下进行处理。在深入介绍之前,可以先快速阅读一下Trish发表的文章,该文章介绍了ring buffer和其工作原理。转载 2015-07-30 12:42:08 · 386 阅读 · 0 评论 -
伪共享(False Sharing)
转自:http://ifeve.com/falsesharing/原文地址:http://ifeve.com/false-sharing/作者:Martin Thompson 译者:丁一缓存系统中是以缓存行(cache line)为单位存储的。缓存行是2的整数幂个连续字节,一般为32-256个字节。最常见的缓存行大小是64个字节。当多线程修改互相独立的变量时,转载 2015-07-30 10:35:26 · 410 阅读 · 0 评论 -
内存屏障相关--barrier(),mb(),smp_mb(),乱序,内存一致性
转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=14528823&id=4337007 内核中定义的内存屏障原语有: #define barrier() __asm__ __volatile__("": : :"mem转载 2016-03-15 17:08:10 · 9427 阅读 · 0 评论