You've been hearing a lot lately about parallelism and concurrency here on Channel 9
and the fact that before you know, you'll be writing highly concurrent code due to the
advent of multi-core and the soon-to-be many-core (greater than eight cores) processors. It's hard if not impossible to express parallelism using mainstream general purpose programming tools (most developers compose their applications in a sequential and imperative manner).
Microsoft, along with the rest of the software tools industry, is making great strides to simply the expression of concurrency using the tools that you've grown comfortable using and rely on day to day.
Of course, the current state of tools/technology (Parallel Extensions for .NET, the Concurrency Runtime, etc) make it much easier to compose parallel tasks and move you away from programming threads explicitly. This is a huge step in the right direction, but
it is only a step and much more "walking" has to be done to get us to where we need to go...
Rahul Patil is a concurrency testing expert. His is the complex lifestyle of chasing down bugs that are caused by concurrently executing code (threads). In this discussion, Rahul explains to us what the common patterns are that lead to concurreny bugs (race
conditions, deadlocks, etc) and offers advice on how to catch bugs before you create them...