Programación en paralelo en .NETParallel Programming in .NET

Muchos equipos y estaciones de trabajo personales tienen varios núcleos de CPU que permiten ejecutar múltiples subprocesos simultáneamente.Many personal computers and workstations have multiple CPU cores that enable multiple threads to be executed simultaneously. Para aprovecharse del hardware, puede paralelizar el código para distribuir el trabajo entre varios procesadores.To take advantage of the hardware, you can parallelize your code to distribute work across multiple processors.

En el pasado, la paralelización requería manipulación de bajo nivel de los subprocesos y bloqueos.In the past, parallelization required low-level manipulation of threads and locks. Visual Studio y .NET Framework mejoran la compatibilidad para la programación paralela proporcionando un tiempo de ejecución, tipos de biblioteca de clases y herramientas de diagnóstico.Visual Studio and the .NET Framework enhance support for parallel programming by providing a runtime, class library types, and diagnostic tools. Estas características, que se presentaron con .NET Framework 4, simplifican el desarrollo en paralelo.These features, which were introduced with the .NET Framework 4, simplify parallel development. Puede escribir código paralelo eficaz, específico y escalable de forma natural sin tener que trabajar directamente con subprocesos ni el bloque de subprocesos.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.

La siguiente ilustración proporciona una información general de alto nivel de la arquitectura de programación paralela en .NET Framework:The following illustration provides a high-level overview of the parallel programming architecture in the .NET Framework:

Arquitectura de programación en paralelo de .NET

TecnologíaTechnology DescripciónDescription
Biblioteca TPLTask Parallel Library (TPL) Proporciona documentación para la clase System.Threading.Tasks.Parallel, que incluye versiones paralelas de For y bucles ForEach, y también para la clase System.Threading.Tasks.Task, que representa la manera preferida de expresar las operaciones asincrónicas.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) Una implementación paralela de LINQ to Objects que significativamente mejora el rendimiento en muchos casos.A parallel implementation of LINQ to Objects that significantly improves performance in many scenarios.
Estructuras de datos para la programación paralelaData Structures for Parallel Programming Proporciona vínculos a documentación sobre las clases de colección seguras para subprocesos, tipos de sincronización ligeros y tipos para la inicialización diferida.Provides links to documentation for thread-safe collection classes, lightweight synchronization types, and types for lazy initialization.
Herramientas de diagnóstico paraleloParallel Diagnostic Tools Proporciona vínculos a documentación sobre las ventanas del depurador de Visual Studio para las tareas y pilas paralelas y para el visualizador de simultaneidad.Provides links to documentation for Visual Studio debugger windows for tasks and parallel stacks, and for the Concurrency Visualizer.
Particionadores personalizados para PLINQ y TPLCustom Partitioners for PLINQ and TPL Describe cómo funcionan los particionadores y cómo configurar particionadores predeterminados o crear nuevos.Describes how partitioners work and how to configure the default partitioners or create a new partitioner.
Programadores de tareasTask Schedulers Describe cómo funcionan los programadores y cómo se pueden configurar los programadores predeterminados.Describes how schedulers work and how the default schedulers may be configured.
Expresiones lambda en PLINQ y TPLLambda Expressions in PLINQ and TPL Proporciona información general sobre expresiones lambda en C# y Visual Basic, y presenta cómo se utilizan en PLINQ y 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.
Información adicionalFor Further Reading Proporciona vínculos a información adicional y recursos de ejemplo para programación paralela en .NET.Provides links to additional information and sample resources for parallel programming in .NET.

Vea tambiénSee also