Java Magazine: Intro to the Disruptor Part One

Slide: Disruptor processor

This month's Java Magazine features an article by yours truly, which is yet another intro to the Disruptor. It's basically a summary of the stuff I've written in this blog, updated for version 2.7 - so the names of the classes should be up to date and the responsibilities follow the simplified pattern we use now. If you were looking for an more recent version of my introduction blog posts, this article gives a reasonable overview.

This is intended as part one of a series, as it's a basic and high-level view with no code examples. In fact, it probably could be used to document the C# version as well as the Java version, although I haven't taken a look at that for a while. Next, I would like to give some more code examples of how you use it - as always, any suggestions welcome.

JAX London – I learn stuff and meet people

A couple of weeks ago, I was at JAX London along with a number of the London Java Community regulars (Martijn/Ben/John/Sandro/Simon/Zoe I'm looking at you....)

My purpose for attending was largely to present the Hardcore Concurrency for Beginners talk that Mike and I debuted at an LJC event a few weeks back. Almost as important was catching up with the aforementioned LJCers and meeting with as many people as would talk to me. After the disappointment of the sessions at Java One, sitting in a room being talked at was quite low down on my list of priorities. Sometimes it's nice to be wrong.

Continue reading "JAX London – I learn stuff and meet people"

Mike and I debut our new Disruptor presentation

Last Tuesday Mike and I unveiled our brand shiny new presentation: Understanding the Disruptor, a Beginner's Guide to Hardcore Concurrency. This was a preview of the talk we'll be doing at JAX London on the 2nd November.

A video of the session is available, as are the slides. I promise not to say "so" anywhere near as many times when I repeat my performance at JAX (is there anything more painful than watching yourself on video?).

Continue reading "Mike and I debut our new Disruptor presentation"

Disruptor 2.0 – All Change Please

Martin recently announced version 2.0 of the Disruptor - basically there have been so many changes since we first open-sourced it that it's time to mark that officially. His post goes over all the changes, the aim of this article is to attempt to translate my previous blog posts into new-world-speak, since it's going to take a long time to re-write each of them all over again. Now I see the disadvantage of hand-drawing everything.

Continue reading "Disruptor 2.0 – All Change Please"

Dissecting the Disruptor: Demystifying Memory Barriers

My recent slow-down in posting is because I've been trying to write a post explaining memory barriers and their applicability in the Disruptor. The problem is, no matter how much I read and no matter how many times I ask the ever-patient Martin and Mike questions trying to clarify some point, I just don't intuitively grasp the subject. I guess I don't have the deep background knowledge required to fully understand.

So, rather than make an idiot of myself trying to explain something I don't really get, I'm going to try and cover, at an abstract / massive-simplification level, what I do understand in the area. Martin has written a post going into memory barriers in some detail, so hopefully I can get away with skimming the subject.

Continue reading "Dissecting the Disruptor: Demystifying Memory Barriers"

Dissecting the Disruptor: Why it’s so fast (part two) – Magic cache line padding

We mention the phrase Mechanical Sympathy quite a lot, in fact it's even Martin's blog title. It's about understanding how the underlying hardware operates and programming in a way that works with that, not against it.

We get a number of comments and questions about the mysterious cache line padding in the RingBuffer, and I referred to it in the last post. Since this lends itself to pretty pictures, it's the next thing I thought I would tackle.

Continue reading "Dissecting the Disruptor: Why it’s so fast (part two) – Magic cache line padding"

Dissecting the Disruptor: Why it’s so fast (part one) – Locks Are Bad

Martin Fowler has written a really good article describing not only the Disruptor, but also how it fits into the architecture at LMAX. This gives some of the context that has been missing so far, but the most frequently asked question is still "What is the Disruptor?".

I'm working up to answering that. I'm currently on question number two: "Why is it so fast?".

Continue reading "Dissecting the Disruptor: Why it’s so fast (part one) – Locks Are Bad"