Getting to the point quickly, this is a great book. I personally still find it difficult to find .NET titles dealing with advanced topics that are more than just a rehash of the Microsoft documentation. The information presented here by Alan L. Dennis is definitely an exception. It is clear that the author fully understands the topic and has used these techniques in real applications. And more importantly, the author presents the information in a clear, understandable progression that allows readers who may not already understand multithreading concepts to follow along and learn this very powerful feature of the .NET Framework.
The only knock I have on this book may actually be considered a benefit to more readers than not. The author mixes the sample code back and forth between C# and VB. As a C# programmer, I found the VB examples distracting and would have preferred that the book focus on one language or the other. I understand both the author and publisher are trying to reach the widest possible audience, and certainly the VB examples are easy enough to understand by most C# programmers. Again, this is a minor "knock", and the full source code is available as a download in both languages from the publisher's site.
Table of Contents
- Process and Thread basics
- .NET from a Threading Perspective
- Multithreading in .Net
- Thread Lifecycle
- Controlling threads
- Communicating with threads
- Concurrency Control
- Wait Handle Classes
- Reader Writer Lock
- Thread Pool
- ThreadStatic and Thread Local Storage
- Delegates in Detail
- Windows Forms from a Multithreading Perspective
- Unmanaged Code and Managed Threads
- Designing with Threads
- Multithreading in J#
This book is written for the intermediate .NET programmer who may, or may not be familiar with multithreading concepts. The material presented provides the reader with an understanding of the many varied concepts and techniques for developing multithreaded applications in .NET. Not only does the author present the implementation details of each technique, but also some guidelines on when to use the various options that are available.
The chapter dealing with the life cycles of .NET threads is particularly enlightening if you are just beginning with .NET multithreading. The Concurrency Control and Wait Handle Classes chapters provide the reader who may be familiar with multithreading concepts to understand the details of the .NET implementation. The Thread Pool chapter is also in this category. In my opinion, a serious programmer should read everything available on .NET delegates and events--I always find some new bit of information, and the chapter on this topic is no exception.
The author finishes with Multithreading in J#. While this isn't of particular interest to me, I think it is quite appropriate now that Visual Studio 2003 is making J# a full-fledged member on a par with the other .NET languages.
.NET multithreading is a concept that developers will be using more and more to provide both a rich user experience and high performance in their applications. This book is both a great tutorial and a great ongoing reference on for this topic.
Thanks, Alan L. Dennis and Manning Publishing. This title is near the top of my .NET recommendations.
Steve Sharrock - www.AspAlliance.com/shark / www.SharkCode.com