随笔分类 - Disruptor-NET
摘要:Disruptor-NET算法(是一种无锁算法)需要我们自己实现某一种特定的内存操作的语义以保证算法的正确性。这时我们就需要显式的使用一些指令来控制内存操作指令的顺序以及其可见性定义。这种指令称为内存栅栏。内存一致性模型需要在各种的程序与系统的各个层次上定义内存访问的行为。在机器码与的层次上,其定义将影响硬件的设计者以及机器码开发人员;而在高级语言层次上,其定义将影响高级语言开发人员以及编译器开发人员和硬件设计人员。即,内存操作的乱序在各个层次都是存在的。这里,所谓的程序的执行顺序有三种:(1)程序顺序:指在特定CPU上运行的,执行内存操作的代码的顺序。这指的是编译好的程序二进制镜像中的指令的
阅读全文
摘要:原文地址:http://mechanitis.blogspot.com/2011/07/dissecting-disruptor-writing-to-ring.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。这是 Disruptor 全方位解析(end-to-end view)中缺少的一章。当心,本文非常长。但是为了让你能连在一起联系上下文的阅读,我还是决定把它们写进一篇博客里。本文的 重点 是:不要让 Ring 重叠;如何通知消费者;生产者一端的批处理;以及多个生产者如何协同工作。ProducerBarriersDisruptor 代码 给 消费者 提供了一些接
阅读全文
摘要:原文地址:http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-how-do-i-read-from.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。这是理解 LMAX 开发的 Disruptor 模式 系列博客的下一篇。从 上一篇博客 我们都明白了什么是 Ring Buffer 以及 它有多棒。遗憾的是,我还没有提到当你实际使用 Disruptor 时,怎样读写数据。ConsumerBarrier 与消费者这里我要稍微反过来介绍,因为总的来说这一段比较容易理解。假设一些魔法已经把数据填入 Ri
阅读全文
摘要:原文地址: http://mechanitis.blogspot.com/2011/06/dissecting-disruptor-whats-so-special.html 作者是 Trisha Gee, LMAX 公司的一位女工程师。最近我们开源了 LMAX Disruptor,它是让我们的交易流程变得如此之快的关键。为什么要开源它?因为我们意识到大家对高性能编程的传统认知 ... 有些不对劲。我们找到了一个更好的,更快的在线程间共享数据的方法,如果不把它分享给大家就太自私了。而且,这会使我们看起来很酷。从这个 网站 你可以下载一份解释什么是 Disruptor,以及它为什么如此巧妙
阅读全文