Buy new:
-27% $93.06$93.06
Ships from: DeckleEdge LLC Sold by: DeckleEdge LLC
Save with Used - Very Good
$13.91$13.91
Ships from: Books-R-Keen Sold by: Books-R-Keen

Download the free Kindle app and start reading Kindle books instantly on your smartphone, tablet, or computer - no Kindle device required.
Read instantly on your browser with Kindle for Web.
Using your mobile phone camera - scan the code below and download the Kindle app.
Follow the author
OK
Modern Multithreading : Implementing, Testing, and Debugging Multithreaded Java and C++/Pthreads/Win32 Programs 1st Edition
Purchase options and add-ons
This textbook examines languages and libraries for multithreaded programming. Readers learn how to create threads in Java and C++, and develop essential concurrent programming and problem-solving skills. Moreover, the textbook sets itself apart from other comparable works by helping readers to become proficient in key testing and debugging techniques. Among the topics covered, readers are introduced to the relevant aspects of Java, the POSIX Pthreads library, and the Windows Win32 Applications Programming Interface.
The authors have developed and fine-tuned this book through the concurrent programming courses they have taught for the past twenty years. The material, which emphasizes practical tools and techniques to solve concurrent programming problems, includes original results from the authors' research. Chapters include:
* Introduction to concurrent programming
* The critical section problem
* Semaphores and locks
* Monitors
* Message-passing
* Message-passing in distributed programs
* Testing and debugging concurrent programs
As an aid to both students and instructors, class libraries have been implemented to provide working examples of all the material that is covered. These libraries and the testing techniques they support can be used to assess student-written programs.
Each chapter includes exercises that build skills in program writing and help ensure that readers have mastered the chapter's key concepts. The source code for all the listings in the text and for the synchronization libraries is also provided, as well as startup files and test cases for the exercises.
This textbook is designed for upper-level undergraduates and graduate students in computer science. With its abundance of practical material and inclusion of working code, coupled with an emphasis on testing and debugging, it is also a highly useful reference for practicing programmers.
- ISBN-100471725048
- ISBN-13978-0471725046
- Edition1st
- PublisherWiley-Interscience
- Publication dateOctober 19, 2005
- LanguageEnglish
- Dimensions6.22 x 0.93 x 9.31 inches
- Print length480 pages
Frequently purchased items with fast delivery
Editorial Reviews
Review
From the Inside Flap
This textbook examines languages and libraries for multithreaded programming. Readers learn how to create threads in Java and C++, and develop essential concurrent programming and problem-solving skills. Moreover, the textbook sets itself apart from other comparable works by helping readers to become proficient in key testing and debugging techniques. Among the topics covered, readers are introduced to the relevant aspects of Java, the POSIX Pthreads library, and the Windows Win32 Applications Programming Interface.
The authors have developed and fine-tuned this book through the concurrent programming courses they have taught for the past twenty years. The material, which emphasizes practical tools and techniques to solve concurrent programming problems, includes original results from the authors' research. Chapters include:
- Introduction to concurrent programming
- The critical section problem
- Semaphores and locks
- Monitors
- Message-passing
- Message-passing in distributed programs
- Testing and debugging concurrent programs
As an aid to both students and instructors, class libraries have been implemented to provide working examples of all the material that is covered. These libraries and the testing techniques they support can be used to assess student-written programs.
Each chapter includes exercises that build skills in program writing and help ensure that readers have mastered the chapter's key concepts. The source code for all the listings in the text and for the synchronization libraries is also provided, as well as startup files and test cases for the exercises.
This textbook is designed for upper-level undergraduates and graduate students in computer science. With its abundance of practical material and inclusion of working code, coupled with an emphasis on testing and debugging, it is also a highly useful reference for practicing programmers.
From the Back Cover
This textbook examines languages and libraries for multithreaded programming. Readers learn how to create threads in Java and C++, and develop essential concurrent programming and problem-solving skills. Moreover, the textbook sets itself apart from other comparable works by helping readers to become proficient in key testing and debugging techniques. Among the topics covered, readers are introduced to the relevant aspects of Java, the POSIX Pthreads library, and the Windows Win32 Applications Programming Interface.
The authors have developed and fine-tuned this book through the concurrent programming courses they have taught for the past twenty years. The material, which emphasizes practical tools and techniques to solve concurrent programming problems, includes original results from the authors' research. Chapters include:
- Introduction to concurrent programming
- The critical section problem
- Semaphores and locks
- Monitors
- Message-passing
- Message-passing in distributed programs
- Testing and debugging concurrent programs
As an aid to both students and instructors, class libraries have been implemented to provide working examples of all the material that is covered. These libraries and the testing techniques they support can be used to assess student-written programs.
Each chapter includes exercises that build skills in program writing and help ensure that readers have mastered the chapter's key concepts. The source code for all the listings in the text and for the synchronization libraries is also provided, as well as startup files and test cases for the exercises.
This textbook is designed for upper-level undergraduates and graduate students in computer science. With its abundance of practical material and inclusion of working code, coupled with an emphasis on testing and debugging, it is also a highly useful reference for practicing programmers.
About the Author
KUO-CHUNG TAI, PhD, was a Professor in the Department of Computer Science, North Carolina State University as well as the Co-Director of the university's Software Engineering Laboratory.
Product details
- Publisher : Wiley-Interscience; 1st edition (October 19, 2005)
- Language : English
- Paperback : 480 pages
- ISBN-10 : 0471725048
- ISBN-13 : 978-0471725046
- Item Weight : 1.45 pounds
- Dimensions : 6.22 x 0.93 x 9.31 inches
- Best Sellers Rank: #4,741,826 in Books (See Top 100 in Books)
- #11 in Win32 API Programming
- #157 in Computer Programming Debugging
- #447 in Object-Oriented Software Design
- Customer Reviews:
About the author

Discover more of the author’s books, see similar authors, read book recommendations and more.
Customer reviews
Customer Reviews, including Product Star Ratings help customers to learn more about the product and decide whether it is the right product for them.
To calculate the overall star rating and percentage breakdown by star, we don’t use a simple average. Instead, our system considers things like how recent a review is and if the reviewer bought the item on Amazon. It also analyzed reviews to verify trustworthiness.
Learn more how customers reviews work on AmazonTop reviews from the United States
There was a problem filtering reviews. Please reload the page.
- Reviewed in the United States on February 17, 2009I can't emphasize how excellent this book is. It not only goes to great lengths to explain the intricacies of how MultiThreading works, but it also cleverly shows how things can go wrong. It also provides algorithms for synchronizing events without creating deadlocks.
Highly recommended.
- Reviewed in the United States on November 25, 2007this book is awesome and also very clear to understand, it help you fix very common mistakes with real life examples. all the code is focused on a common classes between C++/java, the only cons is this book don't use linux pthreads instead use win32 version of pthreads so be carefull because the examples on their website won't compile in linux without adjustment.
- Reviewed in the United States on November 9, 2007This book is simply excellent. I have already completed my bachelors degree in Computer Science, which means I only had a basic understanding of threading from my Distributed Computing class. So, I knew a whole bunch of thread jargon and slightly understood how threads are created and what the critical section problem is, as well as a basic understanding of how semaphores can solve the problem. Beyond that, the book has taught me what goes on behind the scenes of thread creation and why critical sections can be so complicated. The average Computer Science student is not interested in how it works behind the scenes, only how to make it work for their current needs. This book, while useful to a more adept coder, will not quickly and easily fulfill that requirement. It is definitely geared toward those that are really serious about multithreading and intend to test/use their threading knowledge over and over again. If that is you and you don't really understand threading too well, this book can take you from novice to expert in only a few months.
I'd definitely recommend it to my co-workers!
- Reviewed in the United States on October 5, 2006I got this book hoping for helpful ideas on how to debug multithreaded programs. This book has them, but the writing isn't that clear or readable. It reads like a grad. level paper more than a standard technical book that most of us are used to.
The book lightly covers standard multithreading concepts and objects, but you're better off learning those someplace else because I'm sure it's explained in more "laymen" terms elsewhere. The one thing this book does do well is offer a way for you to write mutexes, semaphores, monitors, etc. in a way that would allow you to replay a given run of a multithreaded program (assuming you also can reproduce the input to said program somehow). If you know how to debug a single threaded application, this ability makes it easier to debug a multithreaded program. (As things become determisitic.)
However, if you already have a program that you're trying to debug, you end up out of luck, unless you want to port your program to use these new libraries.
Also note that all the examples in this book are for C++ or Java. C doesn't have the object-oriented abilities that would be needed to easily use the examples.
- Reviewed in the United States on April 28, 2008As a Java engineer, I cannot really recommend this book. While the authors are definitely knowledgeable about their subject, they do not do a good job in communicating their knowledge to a reader. The book reads like a doctoral thesis, poorly organized, not well laid out. Brian Goetz book on Concurrency is a much better book.
- Reviewed in the United States on June 17, 2008Even though title suggests it is 'modern multithreading', this book reiterates typical multithreading issues. However subjects addressed are not presented well enough and code snippets are not explained properly.
- Reviewed in the United States on August 13, 2007I think it was a pretty decent writing but certain parts can be hard to follow and i thought a combination of code + graphics would make it an even better read
Top reviews from other countries
- JshReviewed in the United Kingdom on July 19, 2007
3.0 out of 5 stars Tough read but interesting ideas
I bought this book because of the "Testing and Debugging" in the sub-title as this is an area that other books on multi-threading tend to skip.
About the book - four negatives first, but do read the positives afterwards as well as they are big positives...
The first thing that hit me (and this is the least significant, but one for the publisher to be aware of) when reading this book was how old-fashioned it looks. For a book called "Modern Multithreading" you would think that Wiley (the publishers) would have presented the book better. The drab brown cover doesn't really matter, but the formatting of the text inside does. Source listings are shown in the same typeface as surrounding text, with no border etc to differentiate them. Worse is that if the text refers to a listing, the listing is likely to be on the next page wrapped in text about something else. The whole presentation is really poor.
The second thing that hit me, which is more significant, is that the authors simply do not write well. There can be no doubt that the authors are academics and that this book is a text book - it is not an easy read (because of writing style, not difficulty of content) and comes across as being a bound version of all of the photocopied hand-outs that you can imagine being given out at lectures during a computer science degree course. If you think of hand-outs as being notes that are typed up to support what was said during the lectures then you can imagine how they read. Put over 400 pages of them together and you get a feel for this book. Terse (but worth persevering).
The third negative, is that the code samples are described by the authors as a library, but they are not seriously useable as such. Maybe we've been spoilt by some of the excellent C++ and Java books that have been produced over recent years, but it has become common to be able to lift useful bits of code from books and reuse them without change. The code in this book is not like that. Good for research but not for serious use without being reworked. I have downloaded the full source code from the author's web-site (it doesn't all appear in the book) and found that for serious use it (a) needs some bugs fixed, (b) needs better error handling, (c) need optimising, (d) needs general reworking (it wouldn't pass code review the way it stands).
Fourthly, the index is incomplete and there is not a glossary. Why is this a problem? Well, given how difficult a read this is you can imagine how easy it is to glaze over. I clearly did that somewhere as I missed the meaning of an abbreviation that was then used repeatedly later on. I must had seen that same abbreviation used half a dozen times before thinking that I really should find out what it means as it seemed to be getting increasingly significant. I looked for a glossary but there isn't one included. I looked in the index to find the first page the abbreviation was used. Unfortunately the index didn't list the first page it was used, so I ended up scanning all the way from the start of the book to find the meaning. I'm very glad to have found it, because the moment I did the whole intention of the book started falling into place (although that wasn't confirmed until more than 140 pages in - see below).
Now for the plus points - well, one anyway...
This book covers something I have never seen any other book attempt to do. Most books say something along the lines of "multi-threading is hard, testing and debugging multi-threaded programs is really difficult and we're not going to give you any advice about how to do it". Well not this book. You may need to get more than 140 pages into the book before it reaches the really interesting ideas, but this book attempts to explain how to trace the interactions between different threads and to provide a way of replaying the same sequence in order to test/debug problems. As well as that it gives methods that will help to identify race conditions and deadlocks (where most books describe what they are and then go no further). Given that pre-emptive multi-threading gives you a system that is inherently non-deterministic, to attempt to provide repeatability by building a layer over the usual synchronisation mechanisms is a really interesting idea. It slows your code down so you don't want to put it into production code (another change required to the code), but during development it could be really handy. It doesn't give you a completely deterministic system, but helps to make the main interactions between threads more repeatable.
So to summarise - a couple of very interesting ideas that are incredibly badly presented, but given that I have never seen any other book try to describe the same material I'm afraid that there is no better book to recommend (please tell me if there is!). I've started using the ideas presented in this book in my own code, fixing/enhancing the code from the book in the process. Given that getting this code into a "professional" condition is a non-trivial task, that should give an idea of how useful I think the ideas are. Its taken a couple of weeks to integrate into my own threading library, but tracing, race condition detection and deadlock detection are working, though the deadlock detection mechanism is pretty primitive - I may do further work on that to make it more useful. Although I have coded the replay mechanism I haven't tested that yet - will update this review with the result when I have time to test it.
If you are new to multi-threading buy something easier to read as a tutorial, but if you already have good multi-threading experience and want to build your own framework combine the material from this book, with ideas from "Programming with Hyper-Threading Technology" and (for Windows) details from "Programming Applications in Microsoft Windows".
[Note added April 2009] Intel sell a tool called Intel ThreadChecker which does detection of race conditions very successfully. Rather than add extra complexity in your own code to check for such issues, you may prefer to simply use ThreadChecker.