Concurrency means different things to different people. Some folks think in terms of agents and messages—cooperating but asynchronous state machines. Others think in terms of tasks, usually in the form of functions or expressions that may execute concurrently. Still others think in terms of data parallelism, where the structure of the data enables concurrency. You might even consider these complementary or overlapping techniques. Regardless of how you view the world of concurrency, at the heart of any contemporary approach to concurrency is a thread pool of one form or another.
I hope you enjoy it. This is the first in a series on the Windows thread pool API. It also takes advantage of the unique_handle class template I introduced in my July 2011 column so be sure to read that first.
You can find links to more of my articles here.