Thursday, January 23, 2014

Concurrency Control Algorithms

There are about a dozen of Concurrency Control Algorithms, at least according to wikipedia:
http://en.wikipedia.org/wiki/Category:Concurrency_control_algorithms

What is a Concurrency Control Algorithm and what is it good for?
That is a good question... the short answer is, I don't know, and a lot... to get the long answer you'll have to read the links for each of them, because I don't know enough about it to provide any half-decent explanation.

One thing you'll notice about these algorithms, is that they were almost all invented in the 70s and 80s, and since then, there hasn't been much progress in this area.
... or at least, there wasn't much progress until recently, because the concurrency control algorithm used on the Left-Right has just been invented  :)

Not only is the Left-Right a new concurrency control algorithm, when pretty much everybody thought there weren't any more to invent, otherwise someone would have come up with a new one during the past 30 year, but the Left-Right has wait-free properties (for read operations) and can be implemented in languages with a well defined memory model (Java, C11, C++1x).




So what does the world benefit from yet another concurrency control algorithm?
Well, by itself, the Left-Right has some applicability but I admit it is somewhat limited. Similar to most such algorithms, its biggest strength is shown when used in other scenarios, which only the future will show... or actually, we will show in the future.


If someone knows of other concurrency control algorithms besides the ones on wikipedia please let me know on the comments section.
I guess we should propose to add the Left-Right on wikipedia at some point  :)