The first offering of the three-day Effective Concurrency course in May went very well. We’re doing it again later this month — this will be the last offering this year.
Here’s the brief information (more details below):
3-Day Seminar: Effective Concurrency
September 22-4, 2008
Bellevue, WA, USA
Developed and taught by Herb SutterThis 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.
Here’s a summary of what we’ll cover during the three days:
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
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 in the Seattle area!
Has there been any thought on making these seminars available through an online medium. I know from personal experience that it might not be possible to make the trip to a particular location but I would think there would be a much bigger audience for an online presentation as well along the lines of an online course. Just a thought!!