Console has recently pushed a new paradigm in the hand of game programmers. Multi-thread programming is now in our everyday life. The transformation of a sequential game engine into a multi-threaded engine is far from being trivial, and no references exists on this particular topic. Even if multithread programming is far from being new, few books are focused on concept and theory. Books about API are good, but they don’t teach you the good way to use the APIs from a design point of view. This book introduces theory and then apply it with code samples. Everything is programmed in java, but it applies to C++ as well.
The first chapters introduce abstract theoretical concepts, such as memory models. The next chapters cover concrete datas structures that help understanding concepts exposed earlier. The approaches and concepts used will help the reader to understand the phase one must follow to transform a sequential algorithm into a multi-threaded one. Most of the book is oriented around collection, but the result is good: each collection touches a new problem and exposes a new solution. Going from lock-based to lock-free algorithm, the process shows step by step transformations of collections such as set, list, hash map. To finish, work distribution and transactional memory are explained. Those chapters also introduce concepts that may appear in future architectures. The book closes with a huge appendix that exposes platform specific knowledge that one must know to address unexplained behaviors.
Elegantly written, this book is a bible, the code provided is clear, and the difficulty increases smoothly chapter after chapter. This book must be putted into every game programmer’s hands. But if they do not have any multiprocessor knowledge, the dive may be hard to stand.