At the start of November, I published What every systems programmer should know about concurrency, a short primer on the topic. Many thanks to Anthony Williams, Fedor Pikus, Paul McKenney, and all of you for your fantastic feedback!

In light of it, I’m happy to announce the paper’s first major update. It adds two sections: one discusses the differences between blocking and lockless algorithms, and the other explains why volatile is not the tool you’re looking for when writing concurrent code. At some point in the near future, I also hope to add a section about false sharing.

You can always find the latest release at the same URL,, or on its Github and Gitlab project pages.