Parallel Programming in .NET (Programação paralela no .NET)Parallel Programming in .NET

Muitos computadores pessoais e estações de trabalho têm vários núcleos de CPU, o que permite a execução simultânea de vários threads.Many personal computers and workstations have multiple CPU cores that enable multiple threads to be executed simultaneously. Para tirar proveito do hardware, é possível paralelizar seu código para distribuir o trabalho entre vários processadores.To take advantage of the hardware, you can parallelize your code to distribute work across multiple processors.

No passado, a paralelização exigia a manipulação em baixo nível de threads e de bloqueios.In the past, parallelization required low-level manipulation of threads and locks. O Visual Studio e o .NET aprimoram o suporte à programação paralela fornecendo um tempo de execução, tipos de biblioteca de classes e ferramentas de diagnóstico.Visual Studio and .NET enhance support for parallel programming by providing a runtime, class library types, and diagnostic tools. Esses recursos, que foram introduzidos no .NET Framework 4, simplificam o desenvolvimento paralelo.These features, which were introduced in .NET Framework 4, simplify parallel development. É possível escrever código paralelo eficiente, refinado e dimensionável em uma linguagem natural sem precisar trabalhar diretamente com threads ou o pool de threads.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.

A ilustração a seguir fornece uma visão geral de alto nível da arquitetura de programação paralela no .NET.The following illustration provides a high-level overview of the parallel programming architecture in .NET.

Arquitetura de programação paralela .NET

TecnologiaTechnology DescriçãoDescription
Biblioteca de tarefas paralelas (TPL)Task Parallel Library (TPL) Fornece documentação para a classe System.Threading.Tasks.Parallel, a qual inclui versões paralelas de For e loops ForEach, e também para a classe System.Threading.Tasks.Task, a qual representa a forma preferencial de expressar operações assíncronas.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.
LINQ paralelo (PLINQ)Parallel LINQ (PLINQ) Uma implementação paralela do LINQ em Objects que melhora significativamente o desempenho em muitos cenários.A parallel implementation of LINQ to Objects that significantly improves performance in many scenarios.
Estruturas de dados para programação paralelaData Structures for Parallel Programming Fornece links para a documentação de classes de coleta com threads seguros, tipos de sincronização leves e tipos para inicialização lenta.Provides links to documentation for thread-safe collection classes, lightweight synchronization types, and types for lazy initialization.
Ferramentas de Diagnóstico paralelosParallel Diagnostic Tools Fornece links para a documentação de janelas do depurador para tarefas e pilhas paralelas, e para a Visualização Simultânea do Visual Studio.Provides links to documentation for Visual Studio debugger windows for tasks and parallel stacks, and for the Concurrency Visualizer.
Particionadores personalizados para PLINQ e TPLCustom Partitioners for PLINQ and TPL Descreve como os particionadores funcionam e como configurar os particionadores padrão ou criar um novo particionador.Describes how partitioners work and how to configure the default partitioners or create a new partitioner.
Agendadores de tarefasTask Schedulers Descreve como os agendadores funcionam e como os agendadores padrão podem ser configurados.Describes how schedulers work and how the default schedulers may be configured.
Expressões lambda em PLINQ e TPLLambda Expressions in PLINQ and TPL Fornece uma visão geral das expressões lambda em C# e Visual Basic e mostra como elas são usadas em PLINQ e na Biblioteca Paralela de Tarefas.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.
Para leitura adicionalFor Further Reading Fornece links para informações adicionais e recursos de exemplo para a programação paralela no .NET.Provides links to additional information and sample resources for parallel programming in .NET.

Confira tambémSee also