Vamos falar um pouco sobre channel e goroutines em GO
Em Go, green threads é o nome informal para threads “leves” gerenciadas pela própria linguagem/runtime, e não diretamente pelo sistema operacional.
No caso do Go, isso se refere às goroutines:
- não são threads nativas do SO;
- são criadas e gerenciadas pelo runtime do Go;
- têm custo muito menor de criação e troca de contexto;
- permitem executar milhares ou milhões de tarefas concorrentes.
Diferença principal:
- Thread do SO: criada e agendada pelo sistema operacional.
- Green thread / goroutine: criada e agendada pelo runtime do Go.
O channel por sua vez é uma forma de sincronizar dados entre goroutines. A forma que eles se comunicam é assim: “enche” e “esvazia” conforme goroutines enviam e recebem valores, e o runtime coordena isso de forma segura mesmo com várias threads por baixo.
- channel é uma fila tipada e sincronizada.
- Quem envia coloca um valor no canal.
- Quem recebe retira um valor do canal.
- O runtime do Go garante que isso seja thread-safe.
Exemplo de como se comunica entre Thread os channels. Enche e esvazia o canal:

0 comentários