I’m speaking today at Strangeloop 2015 on a subject I hold dear: concurrent systems programming. The title of the talk is “Racing to Win: Using Race Conditions in Correct Concurrent Software” and the subject matter is effectively how we can use the property of linearization in concurrent software in conjunction with racy state snapshotting to make our software perform predictably under concurrent load.
You can find my slides on speakerdeck.
My talk is built upon a number of research papers (most of which aren’t particularly new). The cited works are:
“Linearizability: A Correctness Condition for Concurrent Objects”. Maurice Herlihy and Jeannette Wing, 1990.
“Sequential Consistency versus Linearizability”. Hagit Attiya and Jennifer Welch, 1994.
“Specifying Concurrent Program Modules”. Leslie Lamport, 1983.
Relevant Further Reading
A number of works are interesting follow-up papers, posts, and talks referencing practical implementation, issues, and gotchas with systems programming and concurrent systems programming in particular.
“Is Parallel Programming Hard, And, If So, What Can You Do About It?”. Created and edited by Paul McKenney, living work.
“Nonblocking Algorithms and Scalable Multicore Programming” Samy Al Bahra, 2013.
“What Every Programmer Should Know About Memory”. Ulrich Drepper, 2007.
“Obstruction-Free Algorithms can be Practically Wait-Free”. Finch, Luchangco, Moir, Shavit, 2015.
“Are Lock-Free Concurrent Algorithms Practically Wait-Free?”. Alistarh, Censor-Hillel, Shavit, 2013.
“Linearizability versus Serializability” Peter Bailis, 2014.