FOREWORD

aParllel prgoamrmnig s i ahdr. Hmm, let me try that again. Parallel programming is hard.

While truly a silly example, my first sentence exemplifies some of the difficulties we, as developers, face while writing multithreaded code. As I write this foreword, my hands typing on my laptop are effectively two distinct, physical processes, and if you further consider each of my fingers as an individual entity, the count would instead be 10. I'm generally acknowledged to be a fast typist, and in order to type at over 100 words per minute, my brain manages to coordinate all of my fingers, flowing them concurrently toward their next targets, yet still (most of the time) ensuring that their output is correctly serialized according to the spelling of the words my mind is willing my hands to render. I deliberately suspended that coordination to deliver that first sentence, such that my hands were no longer synchronizing correctly. The result is a barely readable representation of my thoughts. Luckily, it was easily debugged.

Parallel programming is indeed hard, or at least it has been historically. With the tools that have been available, only a small percentage of software developers have been proficient enough in the art to successfully develop and debug multithreaded applications. And yet, since the advent of modern computers, developers who need to write responsive user interfaces, build scalable services, or take advantage of multiple processing cores for performance have been forced ...

Get Professional Parallel Programming with C#: Master Parallel Extensions With .NET 4 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.