Esta série de simultaneidade C# ajuda você a dominar a programação multithreading e assíncrona em C# e mostra como usar a simultaneidade C# para melhorar o desempenho do aplicativo.
O que você aprenderá
- Entenda os conceitos básicos, incluindo threads, processos e a diferença entre threads e processos.
- Utilize totalmente o poder da biblioteca paralela de tarefas (TPL) usando objetos Task.
- Entenda profundamente como o async/await funciona em C#.
Seção 1. Multithreading
Esta seção ajuda você a compreender os conceitos básicos de thread e multithreading em C# e a construir uma base sólida para o desenvolvimento de aplicativos assíncronos.
- Thread – entenda o objeto Thread e como criar uma aplicação multithreading em C#.
- Thread de segundo plano – entenda os threads de segundo plano e as diferenças entre os threads de segundo plano e de primeiro plano.
- ThreadPool – aprenda como usar o pool de threads para gerenciar threads com mais eficiência.
Seção 2. Programação Assíncrona Baseada em Tarefas (TAP)
A programação assíncrona baseada em tarefas (TAP) é o modelo de programação moderno em C# que simplifica o processo de escrita de código assíncrono.
- Tarefa – explica o modelo de programação assíncrona baseado em tarefas e mostra como usar a
Task
classe para criar operações assíncronas que podem ser executadas simultaneamente. - Encadear múltiplas tarefas – mostra como usar o
ContinueWith()
método daTask
classe para encadear múltiplas tarefas. - Lidar com exceções – aprenda como lidar com
AggregateException
exceções lançadas por operações assíncronas executadas por tarefas. - Async/Await – mostra como usar as
async/await
palavras-chave para criar métodos que são executados de forma assíncrona. - Cancelando uma operação assíncrona – saiba como cancelar uma operação assíncrona usando o token de cancelamento.
- Task.WhenAny() – aguarde a conclusão da primeira tarefa em uma coleção de tarefas e processe o resultado dessa tarefa.
- Task.WhenAll() – aguarde a conclusão de todas as tarefas em uma coleção de tarefas.
Seção 3. Sincronização de Threads
Esta seção mostra como coordenar a execução de vários threads para garantir que eles acessem os recursos compartilhados de maneira segura para threads e evitar condições de corrida, bem como outros problemas de sincronização.
- Instrução lock – mostra como usar a instrução lock para evitar o risco de condições de corrida e sincronização quando várias tarefas (ou threads) tentam acessar os mesmos recursos compartilhados.
- Impasse – entenda o que é um impasse, como ele ocorre e como resolvê-lo usando diversas técnicas.
- Interlocked – aprenda como realizar operações atômicas em uma variável compartilhada usando métodos da classe Interlocked.
- ReaderWriterLockSlim – orienta você sobre como usar a
ReaderWriterLockSlim
classe para permitir que vários threads leiam de um recurso compartilhado simultaneamente, evitando que outros threads façam gravações simultâneas. - SemaphoreSlim – aprenda como usar o objeto semáforo para limitar o número de threads que acessam recursos compartilhados simultaneamente.
Seção 4. Sinalização de Thread
Esta seção mostra como se comunicar entre threads por meio de sinais usando objetos de sinalização, incluindo AutoResetEvent, ManualResetEventSlim e CountDownEvent.
- AutoResetEvent – aprenda como enviar sinais entre threads usando o
AutoResetEvent
objeto. - ManualResetEvent – mostra como usar a
ManualResetEventSlim
classe para sinalizar eventos entre threads. - CountdownEvent – orienta você sobre como usar o
CountdownEvent
objeto para esperar por um número especificado de eventos antes de continuar a execução em threads em espera.