# First things first

Muito do que vou trazer ao longo deste guia é um compilado de coisas que aprendi ao longo da carreira, tanto a nível acadêmico quanto profissional. Tem muito conhecimento teórico pra compartilhar aqui, mas também muito *empirismo*.

> Pegue minha visão com a devida moderação, e fique a vontade pra discordar de alguns pontos e me chamar pra conversar sobre

**Primeira coisa**: acho confuso falar de concorrência iniciando logo por *threads*. Isto geralmente vem acompanhado de "multi-threading", "paralelismo" e também em como deixar o sistema "mais rápido". Na carona vem palavrinhas que causam boa impressão como *escalabilidade e performance*.

Vamos com calma. Existem muitas camadas anteriores que é preciso sabermos.

> "Ah mas certas coisas não vão ajudar no dia-dia, nem vão pagar meus boletos"

*Wrong*. **Vão ajudar sim**. Não estou propondo alto conhecimento acadêmico e teórico, mas reflexões que vão te ajudar a, perdoem a analogia, *apertar aquele parafuso de forma eficiente quando ninguém mais na equipe conseguir apertar.*

E atenção para quando eu digo "eficiente": eficiente é o contrário de **caro e complexo**. Por vezes a gente acaba pensando numa solução que dá uma tremenda volta sendo que era só "apertar o parafuso". Abordagens como "é só colocar mais thread que fica mais rápido" acabam penalizando e muito a performance sem antes tomar a decisão, cientes das limitações da linguagem de programação, do framework, e inclusive do próprio sistema operacional.

E é por isso que resolvi escrever este guia.

## Ok, mas de qual sistema operacional estamos falando?

Quando o assunto é sistemas operacionais, diferentes implementações podem trazer diferentes conceitos, o que pode tornar o assunto impreciso. Por este motivo, é importante estabelecermos qual sistema operacional este guia abordará, e não só: a arquitetura do computador também.

Neste guia abordaremos mais precisamente conceitos da **arquitetura x86\_64 e sistema operacional UNIX-like**, podendo ser qualquer distribuição GNU/Linux ou MacOS, por exemplo.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://concorrencia101.leandronsp.com/first-things-first.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
