Join Newsletter

Solving the Hard Problem of Concurrency

YOW! 2013 Sydney

Concurrency is notorious for creating complexity. I argue that the blame lies not with multithreading, mutability, or even shared writable state. The problem is one of separation: an inability to isolate concurrency logic from application logic. The cause of this inability is twofold. First, we tend to overlook the distinction between concurrency concerns and time-based concerns. Consequently, we end up with too much (complex) concurrency code and not enough (simple) temporal code. Second, there’s been a historical lack of abstractive power in mainstream programming languages. To isolate structured and unstructured concurrency, we need a language that supports type amplification, futures and time travel. The good news is that a mainstream language now supports all three: C# 5.

In this session, I will explain these concepts, and demonstrate how C# 5 simplifies asynchrony and concurrency.

Joe Albahari

.NET Developer


Joe Albahari is an O’Reilly author and the inventor of LINQPad. He’s written seven books on C# and LINQ, including “C# 7.0 in a Nutshell”. He speaks regularly at conferences...