Skip to content
RRicardo Notes
Updated 2026-08-042 min read

Concorrência

De acordo com as fontes, a concorrência é a capacidade de um sistema ou aplicação de lidar com várias tarefas ao mesmo tempo, mas não necessariamente de forma simultânea.

Abaixo estão os pontos principais para entender esse conceito:

1. Funcionamento Técnico

A concorrência envolve o gerenciamento da intercalação (interleaving) de múltiplas unidades de execução, como threads ou processos. Em um processador de núcleo único (single-core), o sistema alterna tão rapidamente entre as tarefas que cria a ilusão de simultaneidade para o usuário. Esse processo de alternância é tecnicamente chamado de context switching (troca de contexto).

2. Analogia do "Mundo Real"

As fontes utilizam o exemplo de um churrasco preparado por uma única pessoa para ilustrar a concorrência:

  • Imagine que você está sozinho organizando o evento.
  • Você precisa cortar a carne, preparar os vegetais, fazer caipirinhas e gelar a cerveja.
  • Você não faz tudo isso ao mesmo tempo (não tem quatro braços), mas alterna entre as tarefas: trabalha um pouco na carne, para e vai gelar a cerveja, volta para a salada, e assim por diante.
  • No final, todas as tarefas progridem de maneira independente, dando a impressão de que tudo está sendo feito "ao mesmo tempo".

3. Diferença entre Concorrência e Paralelismo

É comum confundir os dois termos, mas as fontes estabelecem uma distinção clara:

  • Concorrência: É sobre lidar com muitas coisas ao mesmo tempo. É um problema de estruturação e gerenciamento de tarefas que podem ser executadas de forma independente.
  • Paralelismo: É sobre fazer muitas coisas ao mesmo tempo. Ele exige hardware com múltiplos núcleos de CPU para que as instruções sejam executadas literalmente no mesmo instante.

4. Concorrência em Outros Contextos

  • Multithreading: É uma técnica que facilita a concorrência em sistemas de núcleo único ao permitir fluxos de execução independentes dentro de um processo.
  • Bancos de Dados: O conceito de Isolamento no modelo ACID existe justamente para garantir que transações concorrentes (que acontecem ao mesmo tempo) não interfiram umas nas outras, utilizando mecanismos como "locks" para organizar a fila de acesso.
  • Programação: Em linguagens como Go, a concorrência é implementada através de recursos como Goroutines, que permitem gerenciar essas tarefas em segundo plano de forma eficiente.

Linked from (2)