GotW.ca: Herb Sutter

Home Blog Talks Books & Articles Training & Consulting

On the
blog
RSS feed May 24: Effective Concurrency: Associate Mutexes with Data to Prevent Races
May 7
: The "You Call This Journalism?" Department
May 6: May 12 Webinar on Multicore Parallelism
May 6: Links I enjoyed this week: Flash and HTML5

Herb Sutter is a leading authority on software development. He is the best selling author of Exceptional C++ and three other books and hundreds of technical papers and articles, including the widely-cited essay "The Free Lunch Is Over" which described the software sea change now in progress to exploit increasingly parallel hardware. He has served for over a decade as secretary and chair of the ISO C++ standards committee and was lead architect of C++/CLI at Microsoft. His next book, Effective Concurrency, will be published by Addison-Wesley.

Herb regularly gives invited talks and is available for in-house training and mentoring.

 

Current Talks & Courses

Current Articles

 

 




 

Effective Concurrency
June 28 - July 1, 2010
Bellevue, WA, USA

I'll cover the following topics:

Fundamentals: Define basic concurrency goals and requirements • Understand applications’ scalability needs • Key concurrency patterns

Isolation -- Keep work separate: Running tasks in isolation and communicate via async messages • Integrating multiple messaging systems, including GUIs and sockets • Building responsive applications using background workers • Threads vs. thread pools

Scalability -- Re-enable the Free Lunch: When and how to use more cores • Exploiting parallelism in algorithms • Exploiting parallelism in data structures • Breaking the scalability barrier

Consistency -- Don’t Corrupt Shared State: The many pitfalls of locks--deadlock, convoys, etc. • Locking best practices • Reducing the need for locking shared data • Safe lock-free coding patterns • Avoiding the pitfalls of general lock-free coding • Races and race-related effects

High Performance Concurrency: Machine architecture and concurrency • Costs of fundamental operations, including locks, context switches, and system calls • Memory and cache effects • Data structures that support and undermine concurrency • Enabling linear and superlinear scaling

Migrating Existing Code Bases to Use Concurrency

Near-Future Tools and Features

 

Classic Talks Online

Machine Architecture: Things Your Programming Language Never Told You
  (Google video)  (pdf slides)
September 19, 2007
Northwest C++ Users Group,
Seattle, Washington, USA

Programmers are routinely surprised at what simple code actually does and how expensive it can be, because so many of us are unaware of the increasing complexity of the machine on which the program actually runs. This talk examines the “real meanings” and “true costs” of the code we write and run especially on commodity and server systems, by delving into the performance effects of bandwidth vs. latency limitations, the ever-deepening memory hierarchy, the changing costs arising from the hardware concurrency explosion, memory model effects all the way from the compiler to the CPU to the chipset to the cache, and more -- and what you can do about them.

Effective Concurrency: Associate Mutexes with Data to Prevent Races"
Dr. Dobb's Report
, May 2010.

From the article: "The holy grail of the Consistency pillar is to make a concurrent program race-free and deadlock-free by construction. … This article shows how to achieve the "race-free by construction" grail via sound engineering, with automatic and deterministic race identification at test time based on code coverage alone."

Effective Concurrency: Prefer Futures to Baked-In "Async APIs"
Dr. Dobb's Report
, January 2010.

From the article: "When designing concurrent APIs, separate "what" from "how" Let’s say you have an existing synchronous API function [calledDoSomething]... Because DoSomething could take a long time to execute (whether it keeps a CPU core busy or not), and might be independent of other work the caller is doing, naturally the caller might want to execute DoSomething asynchronously. … The question is, how should we enable that? There is a simple and correct answer, but because many interfaces have opted for a more complex answer let’s consider that one first."

 

Classic Articles Online
The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software,
Slashdotted December 2004. In print Dr. Dobb's Journal, 30(3), March 2005.
The biggest sea change in software development since the OO revolution is knocking at the door, and its name is Concurrency. This is the widely-cited landmark article that first coined the term "concurrency revolution" to describe the turn to parallel hardware and its impact on the future of software.

Software and the Concurrency Revolution (with Jim Larus),
ACM Queue, September 2005.
The concurrency revolution is primarily a software revolution. Soon all new machines will be multicore, and the difficult problem is programming this hardware so that mainstream applications benefit from the continued exponential growth in CPU performance.

Copyright © 2009 Herb Sutter