Concurrent Programming on Windows and over one million other books are available for Amazon Kindle. Learn more

Buy New

or
Sign in to turn on 1-Click ordering.
or
Amazon Prime Free Trial required. Sign up when you check out. Learn More
Buy Used
Used - Good See details
$32.51 & this item ships for FREE with Super Saver Shipping. Details

or
Sign in to turn on 1-Click ordering.
 
   
Kindle Edition
 
   
More Buying Choices
Have one to sell? Sell yours here
Concurrent Programming on Windows
 
 
Start reading Concurrent Programming on Windows on your Kindle in under a minute.

Don't have a Kindle? Get your Kindle here, or download a FREE Kindle Reading App.

Concurrent Programming on Windows [Paperback]

Joe Duffy (Author)
4.6 out of 5 stars  See all reviews (15 customer reviews)

List Price: $59.99
Price: $43.26 & this item ships for FREE with Super Saver Shipping. Details
You Save: $16.73 (28%)
  Special Offers Available
o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
In Stock.
Ships from and sold by Amazon.com. Gift-wrap available.
Only 14 left in stock--order soon (more on the way).
Want it delivered Wednesday, June 6? Choose One-Day Shipping at checkout. Details
Textbook Student FREE Two-Day Shipping for students on millions of items. Learn more

Formats

Amazon Price New from Used from
Kindle Edition $24.19  
Paperback $43.26  
Unknown Binding --  

Book Description

November 7, 2008 032143482X 978-0321434821 1

“When you begin using multi-threading throughout an application, the importance of clean architecture and design is critical. . . . This places an emphasis on understanding not only the platform’s capabilities but also emerging best practices. Joe does a great job interspersing best practices alongside theory throughout his book.”

– From the Foreword by Craig Mundie, Chief Research and Strategy Officer, Microsoft Corporation

 

Author Joe Duffy has risen to the challenge of explaining how to write software that takes full advantage of concurrency and hardware parallelism. In Concurrent Programming on Windows, he explains how to design, implement, and maintain large-scale concurrent programs, primarily using C# and C++ for Windows.

 

Duffy aims to give application, system, and library developers the tools and techniques needed to write efficient, safe code for multicore processors. This is important not only for the kinds of problems where concurrency is inherent and easily exploitable—such as server applications, compute-intensive image manipulation, financial analysis, simulations, and AI algorithms—but also for problems that can be speeded up using parallelism but require more effort—such as math libraries, sort routines, report generation, XML manipulation, and stream processing algorithms.

 

Concurrent Programming on Windows has four major sections: The first introduces concurrency at a high level, followed by a section that focuses on the fundamental platform features, inner workings, and API details. Next, there is a section that describes common patterns, best practices, algorithms, and data structures that emerge while writing concurrent software. The final section covers many of the common system-wide architectural and process concerns of concurrent programming.

 

This is the only book you’ll need in order to learn the best practices and common patterns for programming with concurrency on Windows and .NET.


Special Offers and Product Promotions

  • Buy $50 in qualifying physical textbooks, get $2 in Amazon MP3 Credit. Here's how (restrictions apply)

Frequently Bought Together

Concurrent Programming on Windows + CLR via C# + C# 4.0 in a Nutshell: The Definitive Reference
Price For All Three: $109.35

Show availability and shipping details

Buy the selected items together
  • In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • CLR via C# $35.99

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details

  • C# 4.0 in a Nutshell: The Definitive Reference $30.10

    In Stock.
    Ships from and sold by Amazon.com.
    This item ships for FREE with Super Saver Shipping. Details



Editorial Reviews

Review

"I have been fascinated with concurrency ever since I added threading support to the Common Language Runtime a decade ago. That's also where I met Joe, who is a world expert on this topic. These days, concurrency is a first-order concern for practically all developers. Thank goodness for Joe's book. It is a tour de force and I shall rely on it for many years to come." --Chris Brumme, Distinguished Engineer, Microsoft "I first met Joe when we were both working with the Microsoft CLR team. At that time, we had several discussions about threading and it was apparent that he was as passionate about this subject as I was. Later, Joe transitioned to Microsoft's Parallel Computing Platform team where a lot of his good ideas about threading could come to fruition. Most threading and concurrency books that I have come across contain information that is incorrect and explains how to solve contrived problems that good architecture would never get you into in the first place. Joe's book is one of the very few books that I respect on the matter, and this respect comes from knowing Joe's knowledge, experience, and his ability to explain concepts." --Jeffrey Richter, Wintellect "There are few areas in computing that are as important, or shrouded in mystery, as concurrency. It's not simple, and Duffy doesn't claim to make it so--but armed with the right information and excellent advice, creating correct and highly scalable systems is at least possible. Every self-respecting Windows developer should read this book." --Jonathan Skeet, Software Engineer, Clearswift "What I love about this book is that it is both comprehensive in its coverage of concurrency on the Windows platform, as well as very practical in its presentation of techniques immediately applicable to real-world software development. Joe's book is a 'must have' resource for anyone building native or managed code Windows applications that leverage concurrency!" --Steve Teixeira, Product Unit Manager, Parallel Computing Platform, Microsoft Corporation "This book is a fabulous compendium of both theoretical knowledge and practical guidance on writing effective concurrent applications. Joe Duffy is not only a preeminent expert in the art of developing parallel applications for Windows, he's also a true student of the art of writing. For this book, he has combined those two skill sets to create what deserves and is destined to be a long-standing classic in developers' hands everywhere." --Stephen Toub, Program Manager Lead, Parallel Computing Platform, Microsoft "As chip designers run out of ways to make the individual chip faster, they have moved towards adding parallel compute capacity instead. Consumer PCs with multiple cores are now commonplace. We are at an inflection point where improved performance will no longer come from faster chips but rather from our ability as software developers to exploit concurrency. Understanding the concepts of concurrent programming and how to write concurrent code has therefore become a crucial part of writing successful software. With Concurrent Programming on Windows, Joe Duffy has done a great job explaining concurrent concepts from the fundamentals through advanced techniques. The detailed descriptions of algorithms and their interaction with the underlying hardware turn a complicated subject into something very approachable. This book is the perfect companion to have at your side while writing concurrent software for Windows." --Jason Zander, General Manager, Visual Studio, Microsoft

Review

“I have been fascinated with concurrency ever since I added threading support to the Common Language Runtime a decade ago. That’s also where I met Joe, who is a world expert on this topic. These days, concurrency is a first-order concern for practically all developers. Thank goodness for Joe’s book. It is a tour de force and I shall rely on it for many years to come.”

—Chris Brumme, Distinguished Engineer, Microsoft

 

“I first met Joe when we were both working with the Microsoft CLR team. At that time, we had several discussions about threading and it was apparent that he was as passionate about this subject as I was. Later, Joe transitioned to Microsoft’s Parallel Computing Platform team where a lot of his good ideas about threading could come to fruition. Most threading and concurrency books that I have come across contain information that is incorrect and explains how to solve contrived problems that good architecture would never get you into in the first place. Joe’s book is one of the very few books that I respect on the matter, and this respect comes from knowing Joe’s knowledge, experience, and his ability to explain concepts.”

—Jeffrey Richter, Wintellect

 

“There are few areas in computing that are as important, or shrouded in mystery, as concurrency. It’s not simple, and Duffy doesn’t claim to make it so—but armed with the right information and excellent advice, creating correct and highly scalable systems is at least possible. Every self-respecting Windows developer should read this book.”

—Jonathan Skeet, Software Engineer, Clearswift

 

“What I love about this book is that it is both comprehensive in its coverage of concurrency on the Windows platform, as well as very practical in its presentation of techniques immediately applicable to real-world software development. Joe’s book is a ‘must have’ resource for anyone building native or managed code Windows applications that leverage concurrency!”

—Steve Teixeira, Product Unit Manager, Parallel Computing Platform, Microsoft Corporation

 

“This book is a fabulous compendium of both theoretical knowledge and practical guidance on writing effective concurrent applications. Joe Duffy is not only a preeminent expert in the art of developing parallel applications for Windows, he’s also a true student of the art of writing. For this book, he has combined those two skill sets to create what deserves and is destined to be a long-standing classic in developers’ hands everywhere.”

—Stephen Toub, Program Manager Lead, Parallel Computing Platform, Microsoft

 

“As chip designers run out of ways to make the individual chip faster, they have moved towards adding parallel compute capacity instead. Consumer PCs with multiple cores are now commonplace. We are at an inflection point where improved performance will no longer come from faster chips but rather from our ability as software developers to exploit concurrency. Understanding the concepts of concurrent programming and how to write concurrent code has therefore become a crucial part of writing successful software. With Concurrent Programming on Windows, Joe Duffy has done a great job explaining concurrent concepts from the fundamentals through advanced techniques. The detailed descriptions of algorithms and their interaction with the underlying hardware turn a complicated subject into something very approachable. This book is the perfect companion to have at your side while writing concurrent software for Windows.”

—Jason Zander, General Manager, Visual Studio, Microsoft


Product Details

  • Paperback: 1008 pages
  • Publisher: Addison-Wesley Professional; 1 edition (November 7, 2008)
  • Language: English
  • ISBN-10: 032143482X
  • ISBN-13: 978-0321434821
  • Product Dimensions: 9.1 x 6.9 x 2 inches
  • Shipping Weight: 3.3 pounds (View shipping rates and policies)
  • Average Customer Review: 4.6 out of 5 stars  See all reviews (15 customer reviews)
  • Amazon Best Sellers Rank: #445,897 in Books (See Top 100 in Books)

More About the Author

Joe Duffy is a Program Manager on the Common Language Runtime (CLR) Team at Microsoft, where he works on concurrency and parallel programming models. Prior to joining the team, he was an independent consultant, a CTO for a startup ISV, and an Architect and Software Developer at Massachusetts-based EMC Corporation. Joe has worked professionally with native Windows (COM and Win32), Java, and the .NET Framework, and holds research interests in parallel computing, transactions, language design, and virtual machine design and implementation. He lives in Washington with his soon-to-be wife, cat, and two crazy ferrets. Joe writes frequent essays on his blog at http://www.bluebytesoftware.com/.

Customer Reviews

Most Helpful Customer Reviews
50 of 57 people found the following review helpful
Disappointing January 26, 2009
Format:Paperback
I really wanted to like this book, but in the end I couldn't. It seems to me to be at least twice as long as it needs to be, extremely poorly and confusingly written, and a mish-mash of random odds and ends. I don't think the author has really worked out who his target audience is. Is it people who have a serious interest in the logic of concurrent programming - in which case you'd be better off reading the original papers by the likes of Dijkstra and Hoare, or the much much shorter book by Ben-Ari? Or is it aimed at people who want to write concurrent programs that work on Windows? In which case you'd be better off reading the much shorter book by Beveridge and Wiener.
Proof-reading and quality control is shoddy. For example, I have the distinct impression that at some point some-one has done a global replace of "task" with "thread" in the text, resulting in jibber-jabber such as "though it's highly unlikely that anybody reading this book will have to take on such a thread" on page 60, to cite one example out of several that I noticed.
Was this review helpful to you?
14 of 14 people found the following review helpful
Format:Paperback
I'll split my review into 3 parts:

Know what you get (book's goals): 4/10. The book is a bit "all over the place". It's hard to understand the intent of the book -- it's a bit too theoretical for a "pragmatic concurrent development" that it claims to be which makes the entire book a bit fuzzy and way too long. The problem with this kind of books that you usually can't read all (reading 800+ pages is too much for most people) and you're afraid of missing important parts.

Coverage: 9/10. This book is a great "ref" book in my bookshelf, it explains high level architecture to very deep bits&bytes usage in a very readable fashion. I've got a list of pages that I recommended every one of our developers to read, starting from basic things and dive into data structures, interesting pitfalls and solutions and specific tips & tricks that I found very interesting during my reading.

Relevance: 10/10. This is a must have book for windows developers (especially for .Net developers). It contains crucial basics with an amazing list of examples and best practices (need to be pulled out carefully, but it's there).

I'm still missing a well organized "common concurrent pitfalls & solutions" chapter for the pragmatic developers (assuming that the background exists).

All in all, I highly recommend this book! nice work!
Comment | 
Was this review helpful to you?
8 of 10 people found the following review helpful
Format:Paperback
This book has just the right mix of theory and practical advice to help one learn how to write safe and reliable concurrent applications for the Windows Platform. It is organized into five parts. Part One consists of two introductory chapters on program state management concepts such as synchronization etc. Part Two discusses mechanisms available in the Windows Platform to support concurrent programming: from heavier-weight kernel objects such as Mutexes and Semaphores to lighter-weight and higher-level abstractions such as Monitors, Thread Pools, and Asynchronous Programming Models. Part Three delves into concurrency hazards (e.g., race conditions, deadlocks) to watch out for and data structures (e.g., parallel containers) and techniques that one can use for certain kinds of problems. Part Four culminates in detailed discussions of asynchronous mechanisms for dealing with potentially expensive I/O and GUI operations. Finally, Part Five consists of two appendices: The first appendix pulls together in one chapter all advice and recommendations mentioned in the book as well as additional guidelines for writing safe and reliable concurrent applications, and the second appendix briefly discusses the Parallel Extensions to .Net library. Although the author is more of a .Net expert, he gave roughly equal attention to Win32, Vista, and .Net APIs. The book provides a lot of code samples, which according to the author, would be available for download from the book's related website: http://www.bluebytesoftware.com/books (as of Dec. 18, however, this has not happened). Overall, I think the book is very well written and explains a lot of difficult concepts very well.
Comment | 
Was this review helpful to you?
Most Recent Customer Reviews
Great!
This is a great book which covers everything you need to know about parallel programming using C# and C++. Read more
Published 1 month ago by Y. Meshcheryakova
Excellent when errata is applied
This is a book every serious dev should read. I don't know about an alternative.
However, why did the publisher not correct the hundreds of errors found in the 2nd printing,... Read more
Published 6 months ago by Di Herbert Feichtinger
5 stars are not enough
Simply put, Joe Duffy is a world-wide authority on this topic. I don't just say that based on working with him (his office was 5 offices down the hall from mine), but also based on... Read more
Published on May 20, 2009 by Daniel Moth
concurrent programming
good material for beginner and advanced threaded developer. concepts are easy to test compared to other materials on same concept.
Published on April 24, 2009 by P. Marule
Everything about concurrency, and then some
This book provides an exhaustive treatment of everything concurrency in .NET and Win32.

It's organized very clearly into multiple sections: Concepts, Mechanisms,... Read more
Published on April 2, 2009 by DEH
A must for any Windows developer
Multithreading programming is hard and requires a lot of knowledge of the various platforms and a lot of concentration. Read more
Published on March 4, 2009 by P. Greborio
The definitive reference
No need for any other book about concurrent programming on .net. This book have everything you need to become a master in multi-thread programming on Microsoft .net framework. Read more
Published on February 10, 2009 by Christiano C. Moraes
Get it! Read it! Enjoy it!
Concurrent Programming on Windows (Microsoft .NET Development Series)
I think this book is probably the most important book on concurrent programming on Windows since Pham &... Read more
Published on February 6, 2009 by Boaz Lev
Concurrency Master
I follow Duffy's blog posts on concurrency and find it exceptionally informative. I haven't read the book, which I plan on purchasing in the future, but I believe that much of the... Read more
Published on January 28, 2009 by Wesner Patrick Moise
Must have book for anyone doing concurrency on Windows.
While there are many books on the mechanics of threading and synchronization this is the first book I have found that brings together the paradigm of parallelism and the mechanics... Read more
Published on January 14, 2009 by D. Long
Search Customer Reviews
Only search this product's reviews

Inside This Book (learn more)
First Sentence:
Concurrency is everywhere. Read the first page
Key Phrases - Statistically Improbable Phrases (SIPs): (learn more)
lock count, creating fences, thread start routine, lock free algorithms, lock leveling, outstanding callbacks, latent concurrency, concurrency hazards, thread local state, orphaned lock, recursion counter, alertable wait, detach notifications, balance set manager, recurring timer, interlocked operations, awakened thread, recursive acquisitions, unhandled exception behavior, abandoned mutex, waking thread, interlocked instructions, synchronous completion, broken invariants, shutdown thread
Key Phrases - Capitalized Phrases (CAPs): (learn more)
Further Reading, Windows Vista, Windows Forms, Visual Studio, Windows Server, Windows Kernel Synchronization, Graphical User Interfaces, Advanced Threads, Windows Communication Foundation, Asynchronous Programming Models, Sync Lock, Amdahl's Law, Third Edition, Completion Event, Microsoft Windows Internals, Microsoft Support Knowledgebase, Leveled Lock, Intel Itanium Architecture Software Developer's Manual, Single Threaded Apartment, Technical Report, Windows Presentation Foundation, Communicating Sequential Processes, Intel Corporation, Windows Event Log, Blocking Queue Data Structure
Browse Sample Pages:
Front Cover | Table of Contents | First Pages | Index | Surprise Me!
Search Inside This Book:


Tags Customers Associate with This Product

 (What's this?)
Click on a tag to find related items, discussions, and people.
 
(1)

Your tags: Add your first tag
 

Customer Discussions

This product's forum
Discussion Replies Latest Post
No discussions yet

Ask questions, Share opinions, Gain insight
Start a new discussion
Topic:
First post:
Prompts for sign-in
 


Active discussions in related forums
Search Customer Discussions
Search all Amazon discussions
   
Related forums





Look for Similar Items by Category


Look for Similar Items by Subject