Concurrency in C# Cookbook (Receitas de Programação Paralela em C#)
Concurrency in C# Cookbook (Receitas de Programação Paralela em C#)
Resumo:
Introdução
O livro «Concurrency in C# Cookbook» (em português — «Receitas de Programação Paralela em C#») de autoria de Stephen Cleary é um dos melhores guias práticos para programação assíncrona e paralela no ecossistema .NET. Publicado em 2019 (segunda edição), ele é uma coleção de soluções comprovadas para tarefas típicas que todo desenvolvedor C# enfrenta ao trabalhar com multithreading, assincronia e paralelismo.
O livro é voltado para profissionais: não há teoria excessiva, mas sim receitas claras e prontas para aplicação. Cada receita contém a definição do problema, o código da solução, explicações e advertências. Isso torna o livro uma referência indispensável para quem deseja escrever código eficiente, seguro e escalável em C#.
Sobre o que é este livro
O livro aborda todos os aspectos-chave da programação paralela no .NET, desde os fundamentos de async/await até tópicos avançados, como programação reativa (Rx.NET), canais (Channels) e teste de código assíncrono. Ao todo, o livro tem 15 capítulos, cada um dedicado a uma área específica:
- Capítulo 1. Fundamentos de async/await — criação e espera de tarefas, tratamento de erros, cancelamento de operações.
- Capítulo 2. Fluxos de dados (Dataflow) — biblioteca TPL Dataflow para construção de pipelines de processamento de dados.
- Capítulo 3. Programação reativa (Rx) — trabalho com sequências Observable.
- Capítulo 4. Coleções paralelas — ConcurrentDictionary, ConcurrentQueue e outras estruturas thread-safe.
- Capítulo 5. Bloqueios e sincronização — SemaphoreSlim, ReaderWriterLockSlim, AsyncLock.
- Capítulo 6. Canais (Channels) — novo mecanismo Producer/Consumer no .NET Core.
- Capítulo 7. Teste de código assíncrono — mocks, timeouts, verificação de corretude.
- Capítulo 8. Cenários avançados — fluxos assíncronos (IAsyncEnumerable), ValueTask, ConfigureAwait.
Cada receita segue um modelo único: problema → solução → discussão → advertências. Isso permite encontrar rapidamente a resposta necessária e aplicá-la imediatamente no projeto.
Para quem é este livro
O livro é destinado a desenvolvedores C# que já possuem experiência básica com a linguagem e a plataforma .NET. Será útil para:
- Desenvolvedores Backend, que criam serviços de alta carga em ASP.NET Core.
- Desenvolvedores de aplicativos desktop (WPF, WinForms), que desejam evitar travamentos da interface do usuário.
- Engenheiros migrando do .NET Framework para .NET Core/.NET 5+, para dominar abordagens modernas de assincronia.
- Líderes técnicos e arquitetos, que precisam tomar decisões sobre a escolha de ferramentas para processamento paralelo.
Iniciantes em programação assíncrona devem primeiro ler os capítulos introdutórios, mas, no geral, o livro pressupõe que o leitor já conhece os fundamentos do C#.
O que o leitor aprenderá
Após estudar o livro, você será capaz de:
- Usar corretamente async/await sem deadlocks e race conditions.
- Construir pipelines de processamento de dados com TPL Dataflow.
- Trabalhar com fluxos reativos (Rx.NET) para processar eventos e dados em streaming.
- Escolher a coleção thread-safe adequada para cada tarefa.
- Implementar bloqueios assíncronos e outros primitivos de sincronização.
- Usar canais (Channels) para comunicação eficiente entre produtor e consumidor.
- Escrever testes para código assíncrono com xUnit e Moq.
- Entender a diferença entre Task, ValueTask, IAsyncEnumerable e escolher o tipo ideal.