I’ve spent a bit of time this weekend on my concurrency talk for PDC. It’s taking me longer than expected, mostly because I’m writing “a story” up front… before I even think about touching PPT or writing code. The end result will be a great story to tell captured in a paper and–so that I have a convenient way to guide me through the talk–a slide deck. Too many people use PPT as a crutch for presentations, and most of the time it shows.
The talk’s focus is on the hows and whys of concurrency with a good mix of the realities of the Windows platform thrown in. This necessarily involves some mechanics (e.g. best practices with explicit threading and the ThreadPool, synchronization, locks, lock-free programming), but also a detailed look inside our platform’s legacy, how and why we got here, why some of our legacy still affects how we write concurrent code (anti-concurrency), and where we’re headed.
If you’re interested in reading up on this stuff, I’d recommend any of the following books. It just so happens that they’re all sitting in front of me and being used as references:
Parallel Programming : Techniques and Applications Using Networked Workstations and Parallel Computers: Good survey of the landscape of parallel hardware and software
Fundamentals of Parallel Computing: Similar to the above, with some great coverage on implicit parallelism (e.g. data dependence) and I/O
Patterns for Parallel Programming: Catalogue of canonical concurrent programming patterns
An Introduction to Parallel Computing: Design and Analysis of Algorithms: Focuses on designing your computationally-bound algorithms for parallel scaling
Computer Architecture: A Quantitative Approach: General discussion of hardware concepts, including parallel architectures and shared memory
Concepts, Techniques, and Models of Computer Programming: Broad introduction to programming, but includes some very unique discussion of dataflow and concurrent styles of programming
Multithreading Applications in Win32: The Complete Guide to Threads: Focuses on Win32/64 threading and has a wealth of knowledge on Windows-specific stuff
Windows System Programming: Good general coverage of threading on Win32/64, less specific than the previous
Essential COM: Because of it’s coverage of COM Apartments
Advanced Windows: Discussion of memory management, e.g. process-wide memory, stacks, corruption
Microsoft Windows Internals: Deep dives on similar topics as “Advanced Windows”
Another great related resource that you might want to check out is an article Vance Morisson wrote for August’s MSDN magazine. Vance is one of the most senior guys on the team, and is the architect for the CLR’s JIT. Bottom line: one of the smartest guys I’ve ever met.