| Parallel Programming This is the first in a series of articles introducing the parallel programming techniques that are available in the C# programming language and the .NET framework version 4.0. The first part describes some of the concepts of parallel programming. |
| Parallel For Loop The second part of the Parallel Programming in .NET tutorial examines the parallel for loop. This allows the execution of a specific number of loop iterations in parallel, with data decomposition handled automatically by the Task Parallel Library. |
| Parallel ForEach Loop The third part of the Parallel Programming in .NET tutorial examines the parallel foreach loop. This iterates through the items in a collection, executing the same code for each with the potential for the data to be decomposed and processed in parallel. |
| Terminating Parallel Loops The fourth part of the Parallel Programming in .NET tutorial looks at the early termination of parallel loops. Unlike sequential loops, which can be exited with the break command, there are considerations when stopping loops that run on multiple cores. |
| Synchronisation in Parallel Loops The fifth part of the Parallel Programming in .NET tutorial continues the description of parallel loops. This article looks at the synchronisation problems of aggregation in parallel loops and how to overcome them with locking and local state values. |
| Exceptions and Parallel Loops The sixth part of the Parallel Programming in .NET tutorial is the last instalment that examines the parallel loops. This article discusses how exceptions are thrown by code within a parallel loop and how they can be handled. |
| Using Parallel.Invoke The seventh part of the Parallel Programming in .NET tutorial starts a look at the options that the Task Parallel Library provides for task decomposition. This article describes the Parallel.Invoke method, which can execute several delegates in parallel. |
| Creating Parallel Tasks The eighth part of the Parallel Programming in .NET tutorial starts an examination of the Task class. This allows the programmer to explicitly create tasks designed for parallel execution. This initial article explains how tasks are instantiated and run. |
| Waiting for Parallel Tasks to Complete The ninth part of the Parallel Programming in .NET tutorial considers that the parallel nature of tasks means that it is not possible to assume that tasks have completed. It describes how to synchronise tasks and capture their unhandled exceptions. |
| Obtaining Results from Parallel Tasks The tenth part of the Parallel Programming in .NET tutorial examines the generic Task<T> class. This is a subclass of the Task class seen previously that permits a result to be generated and accessed from the calling thread. |