Parallel Class (System.Threading.Tasks)

Switch View :
ScriptFree
.NET Framework Class Library
Parallel Class

Provides support for parallel loops and regions.

Inheritance Hierarchy

System.Object
  System.Threading.Tasks.Parallel

Namespace:  System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)
Syntax

Visual Basic
<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization := True,  _
	ExternalThreading := True)> _
Public NotInheritable Class Parallel
C#
[HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public static class Parallel
Visual C++
[HostProtectionAttribute(SecurityAction::LinkDemand, Synchronization = true, 
	ExternalThreading = true)]
public ref class Parallel abstract sealed
F#
[<AbstractClass>]
[<Sealed>]
[<HostProtectionAttribute(SecurityAction.LinkDemand, Synchronization = true, 
    ExternalThreading = true)>]
type Parallel =  class end
Methods

  Name Description
Public method Static member For(Int32, Int32, Action<Int32>) Executes a for loop in which iterations may run in parallel.
Public method Static member For(Int32, Int32, Action<Int32, ParallelLoopState>) Executes a for loop in which iterations may run in parallel and the state of the loop can be monitored and manipulated.
Public method Static member For(Int64, Int64, Action<Int64>) Executes a for loop with 64-bit indices in which iterations may run in parallel.
Public method Static member For(Int64, Int64, Action<Int64, ParallelLoopState>) Executes a for loop with 64-bit indices in which iterations may run in parallel and the state of the loop can be monitored and manipulated.
Public method Static member For(Int32, Int32, ParallelOptions, Action<Int32>) Executes a for loop in which iterations may run in parallel and loop options can be configured.
Public method Static member For(Int32, Int32, ParallelOptions, Action<Int32, ParallelLoopState>) Executes a for loop in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member For(Int64, Int64, ParallelOptions, Action<Int64>) Executes a for loop with 64-bit indices in which iterations may run in parallel and loop options can be configured.
Public method Static member For(Int64, Int64, ParallelOptions, Action<Int64, ParallelLoopState>) Executes a for loop with 64-bit indices in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member For<TLocal>(Int32, Int32, Func<TLocal>, Func<Int32, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a for loop with thread-local data in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member For<TLocal>(Int64, Int64, Func<TLocal>, Func<Int64, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a for loop with 64-bit indices and thread-local data in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member For<TLocal>(Int32, Int32, ParallelOptions, Func<TLocal>, Func<Int32, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a for loop with thread-local data in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member For<TLocal>(Int64, Int64, ParallelOptions, Func<TLocal>, Func<Int64, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a for loop with 64-bit indices and thread-local data in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) Executes a foreach (For Each in Visual Basic) operation on an IEnumerable<TSource> in which iterations may run in parallel.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, Action<TSource, ParallelLoopState>) Executes a foreach (For Each in Visual Basic) operation on an IEnumerable<TSource> in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, Action<TSource, ParallelLoopState, Int64>) Executes a foreach (For Each in Visual Basic) operation with 64-bit indices on an IEnumerable<TSource> in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource, ParallelLoopState, Int64>) Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(Partitioner<TSource>, Action<TSource>) Executes a foreach (For Each in Visual Basic) operation on a Partitioner<TSource> in which iterations may run in parallel.
Public method Static member ForEach<TSource>(Partitioner<TSource>, Action<TSource, ParallelLoopState>) Executes a foreach (For Each in Visual Basic) operation on a Partitioner<TSource> in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) Executes a foreach (For Each in Visual Basic) operation on an IEnumerable<TSource> in which iterations may run in parallel amd loop options can be configured.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource, ParallelLoopState>) Executes a foreach (For Each in Visual Basic) operation on an IEnumerable<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource, ParallelLoopState, Int64>) Executes a foreach (For Each in Visual Basic) operation with 64-bit indices on an IEnumerable<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource, ParallelLoopState, Int64>) Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) Executes a foreach (For Each in Visual Basic) operation on a Partitioner<TSource> in which iterations may run in parallel and loop options can be configured.
Public method Static member ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource, ParallelLoopState>) Executes a foreach (For Each in Visual Basic) operation on a Partitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated..
Public method Static member ForEach<TSource, TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable<TSource> in which iterations may run in parallel, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource, ParallelLoopState, Int64, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable<TSource> in which iterations may run in parallel and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource, ParallelLoopState, Int64, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner<TSource> in which iterations may run in parallel and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on an IEnumerable<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated..
Public method Static member ForEach<TSource, TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource, ParallelLoopState, Int64, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data and 64-bit indices on an IEnumerable<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource, ParallelLoopState, Int64, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with 64-bit indices and with thread-local data on a OrderablePartitioner<TSource> in which iterations may run in parallel , loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member ForEach<TSource, TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource, ParallelLoopState, TLocal, TLocal>, Action<TLocal>) Executes a foreach (For Each in Visual Basic) operation with thread-local data on a Partitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Public method Static member Invoke(Action[]) Executes each of the provided actions, possibly in parallel.
Public method Static member Invoke(ParallelOptions, Action[]) Executes each of the provided actions, possibly in parallel, unless the operation is cancelled by the user.
Top
Remarks

The Parallel class provides library-based data parallel replacements for common operations such as for loops, for each loops, and execution of a set of statements.

Note Note

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: Synchronization | ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

Examples

This example demonstrates several approaches to implementing a parallel loop using multiple language constructs.

Visual Basic

Imports System.Threading.Tasks
Module Module1

    Sub Main()
        Dim N As Integer = 1000

        ' Using a named method
        Parallel.For(0, N, AddressOf Method2)

        ' Using a lambda expression.
        Parallel.For(0, N, Sub(i)
                               ' Do Work
                           End Sub)
    End Sub

    Sub Method2(ByVal i As Integer)
        ' Do work.
    End Sub

End Module


C#

using System.Threading.Tasks;   
class Test
{
    static int N = 1000;

    static void TestMethod()
    {
        // Using a named method.
        Parallel.For(0, N, Method2);

        // Using an anonymous method.
        Parallel.For(0, N, delegate(int i)
        {
            // Do Work.
        });

        // Using a lambda expression.
        Parallel.For(0, N, i =>
        {
            // Do Work.
        });
    }

    static void Method2(int i)
    {
        // Do work.
    }
}


Version Information

.NET Framework

Supported in: 4

.NET Framework Client Profile

Supported in: 4
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Thread Safety

All public and protected members of Parallel are thread-safe and may be used concurrently from multiple threads.

See Also

Reference

Other Resources