Free lunch is over, it’s time to go concurrent. The Art of Concurrency addresses the need for a workflow to develop concurrent/parallel applications.
Mainly based on multithreaded applications, the book covers pthreads, Windows threads, OpenMP or Intel Threading Building Blocks library. It also covers some part of multiprocess applications if there are differences with threaded ones.
Content and opinions
The book starts with two chapers on what actions to take before parallelizing and what can and what cannot. Before the usual algorithms that can be parallelized, the author takes three chapters to explain how you may achieve your goal. Ensuring correctness is a difficult task, so the book gives 8 rules to help and then an explanation of several support libraries that can be used.
The biggest part of the book, as I’ve hinted, is dedicated to simple but usual algorithms that may be parallelized: sums and scans, mapreduce, sorts, searches, and graph algorithms. Each time, several different algorithms are first coded in a serial way and then parallelized with possibly different support libraries. Also each time, the efficiency, the simplicity, the portability and the scalability conclude the sub art: it helps standing back.
The last chapter is a small overview of the additional tools that you may use (but they are not mandatory). They are mainly Intel’s tools, but it’s mainly because Intel provides the developer with some of the best tools.
Although the author works for Intel, he doesn’t expose Intel tools more than others. The book tone is adequate, not too much serious, not like a “For Dummies”, so just enjoyable.
If you need advices to parallelize your applications and you don’t want to buy Patterns for Parallel Programming, buy this one (well, buy it anyway).