Sobes.tech
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:

  • lock
  • Mutex
  • Semaphore
  • Monitor