We exert a good deal of effort ensuring that the APIs we provide are consistent within Parallel Extensions as well as with the rest of the .NET Framework. This is from many angles, including behavior and general design, but also naming.
Partitioning in PLINQ
Every PLINQ query that can be parallelized starts with the same step: partitioning. Some queries may even need to repartition in the middle. Partitioning is a fairly simple concept at the high level: PLINQ takes a lock on the input data source,
Exiting out of loops early is a fairly common pattern, one that doesn’t go away when parallelism is introduced. To help simplify these use cases, the Parallel.For and Parallel.ForEach methods support several mechanisms for breaking out of loops early, each of which has different behaviors and targets different requirements.
We’re excited to have the Beta in your hands. (See .NET 4 Beta 1 is now available, with parallelism!) As you use it, please keep in mind the following known issues which we plan to address after Beta1.
1. Do not take a dependency on the System.Collections.Concurrent.ConcurrentLinkedList<T>
In .NET 4, the new Parallel class provides For, ForEach, and Invoke methods for performing operations in parallel. One mental model that some folks use when thinking about Parallel.For is that it’s equivalent to running one System.Threading.Tasks.Task per iteration, e.g. that a loop like:
A very interesting addition to .NET 4 is a set of new types that specifically assist with building cancellation-aware applications and libraries. The new types enable rich scenarios for convenient and safe cancellation, and help simplify situations that used to be be difficult and error-prone and non-composable.
Along with the release of the .NET Framework 4 Beta 1, we’ve just published a slew of samples that demonstrate using Parallel Extensions in a variety of ways. You can download these from Code Gallery at https://code.msdn.microsoft.com/ParExtSamples.
These samples include raytracers,
In addition to the Betas of Visual Studio 2010 and the .NET Framework 4 being available for download today, the MSDN documentation for .NET 4 Beta 1 is also available. This includes quite a bit of useful information about the new parallelism constructs.
We’re very excited that the .NET Framework 4 Beta is now available for public download, as .NET 4 has Parallel Extensions built into its core. You can download the Betas for Visual Studio 2010 and .NET Framework 4 at https://msdn.microsoft.com/en-us/netframework/dd582936.aspx.
For more information on what’s new in Beta 1 regarding concurrency and parallelism,
Visual Studio 2010 has new debugger windows to support the Task-based programming model. Check out my blog post about the Parallel Tasks window.