The September edition of MSDN Magazine contains an article I wrote. Surprise! It's on concurrency:
Using Concurrency for Scalability
There's been a lot of buzz lately about concurrency. The reason for this is due mostly to major hardware vendors' plans to add more processor cores to both client and server machines, and also to the relatively unprepared state of today's software for such hardware. Many articles focus on how to make concurrency safe for your code, but they don't deal with how to get concurrency into your code in the first place. ...
In some sense, a large chunk of the responsibility for making software go faster with the next generation of hardware has been handed off from hardware to software. That means in the medium-to-long term, if you want your code to get faster automatically, you'll have to start thinking about architecting and implementing things differently. This article is meant to explore these architectural issues from the bottom up, and aims to guide you through this new world. In the long run, new programming models are likely to appear that will abstract away a lot of the challenges you will encounter.
Enjoy. The original go-'round was about 10,000 words, far too long for a column-length magazine article. After cutting it back, I do feel like it's a bit fast paced and glosses over some important details. In particular, I had wanted to cut the profiling section but there wasn't enough time in the process to do it. I hope somebody writes a feature-length article on that sometime soon. Nevertheless I think the article will be useful. Any feedback would be appreciated.
I'm also pleased to see that Jeff Richter has a great article on CCR in this same edition (and a sister Channel9 video).