Concorrência e paralelismo
Threads, laço de eventos, async e goroutines, e como cada modelo lida com muitos pedidos ao mesmo tempo.
Concorrência é lidar com várias tarefas ao mesmo tempo, alternando entre elas. Paralelismo é executar várias tarefas literalmente ao mesmo tempo, em CPUs diferentes.
Todo backend atende muitos pedidos simultâneos. O modelo de concorrência da linguagem decide quantos ele aguenta e quais erros aparecem só sob carga.
- Esperar entrada e saída pede concorrência; calcular pede paralelismo.
- Um laço de eventos atende milhares de esperas, e trava inteiro com um cálculo pesado.
- Chamar uma função que bloqueia dentro de código assíncrono trava tudo.
- Duas tarefas alterando o mesmo dado sem proteção perdem atualizações.
- Concorrência sem limite derruba as dependências.