As I've moved away from Verizon, the new location of the online edition is http://web.newsguy.com/sab123/tpopp (and it's also still downloadable as a file).
Verizon has sent a notification that they are discontinuing the web sites for their customers. So the text of the online edition will be moving somewhere else. I haven't quite decided yet, where exactly.
Well, I've made another stab at the Kindle edition of th ebook. I can generate a pretty good HTML now. The problem however is that Kindle is not happy with just any HTML.
Looks like, when it renders a screen, it steps a small fixed number of bytes back and starts collecting the HTML tags from there. So anything longer than a couple of screens (such as table of contents, index, program listings) ends up rendered wrong after that couple of screens.... read more
Just to be clear, the difference between the online edition that is available here for free and the printed edition is: The online edition is a very early draft. The printed edition has been heavily edited to improve the style and clarity of the text. And of course it has the proper illustrations too.
Amazon now offers a discount to the printed edition of "The Practice of Parallel Programming" as well: http://www.amazon.com/gp/product/1451536615 .
This book provides an advanced guide to the issues of the parallel and multithreaded programming. It goes beyond the high-level design of the applications, into the details that are often overlooked but vital to make the programs work. The content is oriented towards the programming of the operating systems, servers and business applications. The parallel programming has three aspects to it: the theory of parallelism, a specific API you plan to use, and the details of how to make it all work together. Many books cover the first two aspects but at the moment this is the only book about the third one. This craft of parallel programming is not widely known, and because of this the parallel programming has gained the reputation of complexity. Surprisingly few programs and libraries do the multithreading quite right. This book leads the readers into the understanding of the craft, using many examples based on POSIX and Microsoft Windows APIs, with occasional Java or C#. Most of the algorithms discussed are general and may be implemented in any language. How to stop a multithreaded program correctly? Or how to stop only a single connection in a multi-user server? What if the program receives a signal? How are the scalable data structures built? What synchronization primitives are more appropriate in which usage patterns, and how are they related to each other? A whole lot of questions about the queues and topologies built with them. When are the fashionable paradigms of lock-free synchronization, transactional memory and actors hot and when not? How to multiplex with threads and without them? This book answers all these questions and more.
The printed edition made its way to Amazon: http://www.amazon.com/gp/product/1451536615
The printed edition of "The Practice of Parallel Programming" is now available at https://www.createspace.com/3438465 . The Amazon.com and other retailers will be coming soon as well, it takes a little time to propagate through the channel. As a special limited-time Internet promotion, use the discount code RYM7VM5Q to get $14 off the list price at the CreateSpace store.
The updated examples package is downloadable now.
The printed edition of The Practice of Parallel Programming will finally be coming out soon. Watch https://www.createspace.com/3438465 . A discount code will be available. The printed edition incorporates many small changes, both fixing the errors and adding the better explanations.
A reader, Sayed Fulkhani, has provided a formatted PDF of the book. It's not the same as the typographical-quality PDF I'm working on but it's much easier to read than the text from the web site.
The online edition of the book "The Practice of Parallel Programming" has been published. You can download it or read online.
To fully learn the parallel programming, you need three books: a book on the theory of parallelism and the partitioning of the computations, a book on a particular API you plan to use, and this one. How to stop a multithreaded program correctly? Or how to stop only a single connection in a multi-user server? What if the program receives a signal? How are the scalable data structures built? What synchronization primitives are more appropriate in which usage patterns, and how are they related to each other? A whole lot of questions about the queues and pipelines. When are the lock-free paradigms hot and when not? How to multiplex with threads and without them? This book provides the answers for all these questions and more.