Sela Open House: Design and Architecture of Concurrent Applications
Yesterday I delivered another Sela Open House in Haifa (kudos to Philips MS for hosting this session). The subject was “Design and Architecture of Concurrent Applications”, and indeed much to my surprise I managed to avoid firing up WinDbg or writing lots of code, and instead talk about high-level principles.
Some of the things we covered:
- Hardware trends—the increasing number of processors means new challenges such as eliminating false sharing, reducing synchronization to a minimum, coping with NUMA architectures
- Types of concurrent applications—partitioning, pipeline
- Trends in software concurrency frameworks—the move from threads to tasks
- Types of concurrent algorithms—task parallelism, data parallelism, algorithms that don’t yield easily to parallelization
You can download the slides and sample code from here (caters for C# developers, but there’s an abundance of C++ ConcRT samples on the web as well). I also said I will provide some links for the material we didn’t cover on concurrency design patterns and debugging, so here goes: