Introduction

Right now, we as programmers are at an impasse—a transition period between the well-understood world of imperative programming, and a world that is increasingly at odds with this model. In the '80s, everything was simple: one machine, one thread, no network.

CPUs are now scaling horizontally, adding more and more cores, instead of scaling the CPU speeds. Network and disk performance are now increasingly requiring asynchronous I/O in order to build high-performance solutions.

Our tools to write asynchronous code, however, haven't kept up with the rest of the world—threads, locks, and events are the assembly language of asynchronous programming. They are straightforward to understand, but as the complexity of the application becomes ...

Get Programming Reactive Extensions and LINQ now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.