Here’s the brief information (more details below):
May 19-21, 2008
Bellevue, WA, USA
Developed and taught by Herb Sutter
This course covers the fundamental tools that software developers need to write effective concurrent software for both single-core and multi-core/many-core machines. To use concurrency effectively, we must identify and solve four key challenges:
- Leverage the ability to perform and manage work asynchronously
- Build applications that naturally run faster on new hardware having more and more cores
- Manage shared objects in memory effectively to avoid races and deadlocks
- Engineer specifically for high performance
This seminar will equip attendees to reason correctly about concurrency requirements and tradeoffs, to migrate existing code bases to be concurrency-enabled, and to achieve key success factors for a concurrent programming project. Most code examples in the course can be directly translated to popular platforms and concurrency libraries, including Linux, Windows, Java, .NET, pthreads, and the forthcoming ISO C++0x standard.
Note on class size limit and possible waitlist: There is a hard limit on attendance at this first one (really). But if the registration site says you’ll get waitlisted, don’t give up: Go ahead and sign up anyway because we may be able to put together a second installment of the seminar a week or two later if there’s enough interest.
Finally, here’s a summary of what we’ll cover during the three days.
- 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
Migrating Existing Code Bases to Use Concurrency
Near-Future Tools and Features
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
I hope to get to meet some of you here in the Seattle area!