The second of my series of articles on threading is up on Microsoft Systems Developer Network Magazine:
Scalable Multithreaded Programming with Tasks
This article is about using tasks to break up a lengthy job into a series of smaller ones – called “tasks” – which can be individually run on a thread. Of course, there are some restrictions on how you can do this and not have the threads step on each other. In some cases it’s impossible to take a serial task and create collection of independent (or nearly so) smaller tasks. But frequently you can have a task make an assumption out the global state and if you’re right most of the time, it’s a win at the expense of occasionally repeating or redoing some work because your tasks didn’t have the exactly correct information.