Junior
O que é concorrência no contexto de multithreading?
sobes.tech IA
Resposta da IA
A concorrência é a capacidade de um sistema de executar várias tarefas ao mesmo tempo, que podem compartilhar recursos comuns. No contexto de multithreading, isso é alcançado através do lançamento de múltiplas threads, cada uma podendo processar sua própria tarefa.
Exemplos de mecanismos que alcançam a concorrência em C#:
- Classe
Thread: Criação e gestão direta de threads.// Criar uma nova thread Thread newThread = new Thread(() => { // Código que será executado na nova thread }); newThread.Start(); // Iniciar a thread - Pool de threads (
ThreadPool): Reutilização de threads para reduzir custos de criação e destruição.// Enfileirar uma tarefa no pool de threads ThreadPool.QueueUserWorkItem((state) => { // Código que será executado em uma thread do pool }); - Tarefas (
Task): Uma abstração de nível superior sobre threads, parte da Task Parallel Library (TPL). Mais conveniente para operações assíncronas.// Criar e iniciar uma tarefa Task.Run(() => { // Código que será executado na tarefa });
A concorrência pode levar a problemas ao acessar dados compartilhados (condições de corrida, deadlocks), exigindo o uso de mecanismos de sincronização como:
lockMutexSemaphoreMonitor