I don't remember why I started to subscribe to the Java concurrency-interest list. I find that overall, it is an excellent mailing list.
There was a post at one point about the Dante Inferno's problem. It triggered my attention, so I decided to buy the book the post was referring to, The Art of Multiprocessor Programming by M Herlihy and N. Shavit.
The books starts with the basics, and is very didactic in its approach. I enjoyed to learn how locks work and how to build them almost out of nothing. The progression is good, starting with a half broken but simple lock and evolving to the more standard algorithm, like the Bakery Lock algorithm. The algorithms are extremely well explained. Later it explains the differences between spin locks (Bakery for example) and blocking locks, while presenting new algorithms for blocking locks.
What is described in the many chapters is mainly how to write the javax.concurrency.utils library, why, and what to add to it.
Here are the main subjects I found interesting even if they are not always well presented:
There was a post at one point about the Dante Inferno's problem. It triggered my attention, so I decided to buy the book the post was referring to, The Art of Multiprocessor Programming by M Herlihy and N. Shavit.
The books starts with the basics, and is very didactic in its approach. I enjoyed to learn how locks work and how to build them almost out of nothing. The progression is good, starting with a half broken but simple lock and evolving to the more standard algorithm, like the Bakery Lock algorithm. The algorithms are extremely well explained. Later it explains the differences between spin locks (Bakery for example) and blocking locks, while presenting new algorithms for blocking locks.
What is described in the many chapters is mainly how to write the javax.concurrency.utils library, why, and what to add to it.
Here are the main subjects I found interesting even if they are not always well presented:
- Bitonic networks: I had not read about it before and I found the subject fascinating. Go and click on the link if you don't know what I am talking about.
- Skip Lists: while I found the subject to be very interesting, I found the skip lists were not presented in a very clear manner. I find the wikipedia page about Skip Lists and the original paper much better to understand skip lists. Fortunately the authors talk about how to make it more concurrent friendly, and that part is well explained.
- Software transactional memory: I have the same opinion than with skip list, except the wikipedia page is very short on details, and the book does give much more details. We feel it is the end of the book and the authors took less time to present it an easily understandable manner. One need to read the chapter several times or to have read before about it to really understand.
I'm glad my post prompted you to buy the book. :-)
ReplyDeleteI found the book to be really helpful in helping me think through lock-free algorithms. For example, afterwards I wrote a ConcurrentLinkedHashMap using ideas from the book and Cliff Click's talks. It works beautifully, although I've been too swamped to finish the testing (when I do, I'll throw it over the fence to Ehcache/concurrency-list).
So I found that the ideas and rigor of the book really helpful in preparing one to write new algorithms.
Hello,
ReplyDeleteI've zoomed through this book in google books after looking for a good book on concurrent programming on Amazon (and reading very positive feedbacks).
The books apparently presents a lot of interesting concepts for someone (like me) who is not acquainted with the subject.
Now, I'm reading your positive review and would really like to buy the book!
However, I do not program in Java (I'm a C and C++ programmer, using the qt framework). Is the book still worth it? I mean: are the concepts "general" enough, without laying too much stress on the facilities by Java in terms of multiprocessor programming?
Thanks for your answer.