The Wayback Machine - https://web.archive.org/web/20120121062050/http://www.codeguru.com:80/cpp/w-p/system/threading/

    Threading

    The Practical Guide to Multithreading - Part 1

    Understand from this guide how and when - as well as when not - to use multithreading.

    Simple Parallel Development with the Asynchronous Agents Library

    By adopting a messaging based approach to task parallelism, the Asynchronous Agents Library provides a simple model for concurrent programming that avoids the complexity of memory locks.

    Parallel Lint

    Understand the new direction in development of static code analyzers - verification of parallel programs. The article reviews several static analyzers which can claim to be called "Parallel Lint".

    Native Parallel Programming for Visual C++ with the Parallel Processing Library

    Visual C++ 10.0's new Parallel Pattern Library supplies methods to execute multiple processing tasks, across available processing resources, eliminating the headache of manually allocating task execution.

    Tip: Lock Leveling

    Use Lock Leveling to Prevent Multi-threading Deadlocks

    Parallel Programming in Visual C++ 2010 CTP

    The CTP build of Visual C++ 2010 includes a new library to help you write native parallel code.

    Handling Multiple Processors in Your Code Using RapidMind

    Multicore processors bring new challenges. See a solution for gaining the ability to scale to the increasing number and types of processor cores.

    [Updated] A Simple Thread Pooling Approach

    Learn about a simple mechanism to achieve thread pooling by using Windows messages.

    Simplified One-Time Initialization in Windows Vista

    With the rapid increase in parallel computing, correct threading, and synchronization are vitally important to programmers building scalable, high-performance solutions. Explore the new one-time object initialization APIs in Vista from a C++ programmer's perspective.

    Easy Multithreading in ATL Windows Applications

    Add one header file to your *.vcproj, insert a few lines of code into your class header, and you'll never again worry about the asynchronous routines in your ATL GUI application.

    Multi-Threaded Message Processor

    Learn about a framework for concurrent message processing for disconnected, multi-threaded applications.

    [Updated] Walking the Callstack

    Learn about a documented and most portable way to walk a callstack for any thread (current, other, and remote). It has an abstraction layer, so the calling app does not need to know the internals.

    [Updated] The K.I.S.S. Approach to I/O Completion Ports

    I/O completion ports are the holy grail of performance. This article provides an extremely lightweight and open framework for easily implementing IOCP's in your application(s).

    Windows Thread Pooling

    Thread pooling describes a technique by which threads of execution are managed and to which work is distributed. Additional semantics such as concurrency control may also be defined. Thread pooling is a nice way to: Manage complexity Make your applications scale Introduce new code while minimizing risk

    Working with CRITICAL_SECTION

    An insight into the inner workings of CRITICAL_SECTION and thread priorities.

    Template Thread Library

    Review demonstrations of two non-MFC thread classes.

    Idle Loop Processing

    Multi-threading contains overhead that is not always needed. This article focuses on a simple idle processing technique using the PeekMessage and PumpMessage functions.

    Creating an Object-Oriented Wrapper to Windows Threads

    Great for creating a simple threading class without the inherit complexities of the CWinThread class