Programmazione parallela in .NETParallel Programming in .NET

Un numero elevato di personal computer e workstation è dotato di diversi core CPU che consentono l'esecuzione simultanea di più thread.Many personal computers and workstations have multiple CPU cores that enable multiple threads to be executed simultaneously. Per sfruttare l'hardware, è possibile parallelizzare il codice per distribuire il lavoro su più processori.To take advantage of the hardware, you can parallelize your code to distribute work across multiple processors.

In passato la parallelizzazione richiedeva la modifica di basso livello di thread e blocchi.In the past, parallelization required low-level manipulation of threads and locks. Visual Studio e .NET Framework migliorano il supporto per la programmazione parallela fornendo un runtime, tipi di librerie di classi e strumenti diagnostici.Visual Studio and the .NET Framework enhance support for parallel programming by providing a runtime, class library types, and diagnostic tools. Queste funzionalità che sono state introdotte con .NET Framework 4, semplificano lo sviluppo parallelo.These features, which were introduced with the .NET Framework 4, simplify parallel development. È possibile scrivere codice parallelo efficiente, con granularità fine e scalabile in un linguaggio naturale senza dover usare direttamente i thread o il pool di thread.You can write efficient, fine-grained, and scalable parallel code in a natural idiom without having to work directly with threads or the thread pool.

Nell'illustrazione seguente viene fornita una panoramica dettagliata dell'architettura di programmazione parallela in .NET Framework:The following illustration provides a high-level overview of the parallel programming architecture in the .NET Framework:

Architettura di programmazione parallela .NET

TecnologiaTechnology DescriptionDescription
Task Parallel Library (TPL)Task Parallel Library (TPL) Viene fornita documentazione per la classe System.Threading.Tasks.Parallel che include versioni parallele dei cicli For e ForEach, nonché per la classe System.Threading.Tasks.Task che rappresenta la modalità preferita per l'espressione di operazioni asincrone.Provides documentation for the System.Threading.Tasks.Parallel class, which includes parallel versions of For and ForEach loops, and also for the System.Threading.Tasks.Task class, which represents the preferred way to express asynchronous operations.
Parallel LINQ (PLINQ)Parallel LINQ (PLINQ) Un'implementazione parallela di LINQ to Objects che migliora significativamente le prestazioni in molti scenari.A parallel implementation of LINQ to Objects that significantly improves performance in many scenarios.
Strutture di dati per la programmazione in paralleloData Structures for Parallel Programming Vengono forniti collegamenti alla documentazione per classi di raccolte thread-safe, tipi di sincronizzazioni leggere e tipi per l'inizializzazione differita.Provides links to documentation for thread-safe collection classes, lightweight synchronization types, and types for lazy initialization.
Strumenti di diagnostica in paralleloParallel Diagnostic Tools Vengono forniti collegamenti alla documentazione per le finestre del debugger di Visual Studio per le attività e gli stack in parallelo e per il Visualizzatore di concorrenza.Provides links to documentation for Visual Studio debugger windows for tasks and parallel stacks, and for the Concurrency Visualizer.
Partitioner personalizzati per PLINQ e TPLCustom Partitioners for PLINQ and TPL Viene descritto come funzionano i partitioner e come configurare i partitioner predefiniti o creare un nuovo partitioner.Describes how partitioners work and how to configure the default partitioners or create a new partitioner.
Utilità di pianificazione delle attivitàTask Schedulers Viene descritto come funziona l'utilità di pianificazione e come possono essere configurate le utilità di pianificazione predefinite.Describes how schedulers work and how the default schedulers may be configured.
Espressioni lambda in PLINQ e TPLLambda Expressions in PLINQ and TPL Viene fornita una breve panoramica delle espressioni lambda in C# e Visual Basic e ne viene mostrato l'utilizzo in PLINQ e Task Parallel Library.Provides a brief overview of lambda expressions in C# and Visual Basic, and shows how they are used in PLINQ and the Task Parallel Library.
Ulteriori lettureFor Further Reading Vengono forniti collegamenti a informazioni aggiuntive e risorse di esempio per la programmazione parallela in .NET.Provides links to additional information and sample resources for parallel programming in .NET.

Vedere ancheSee also