Rafael

Engenheiro de Software

Olá, Eu sou Rafael. Estou construindo coisas para a web e mobile.

Um desenvolvedor dedicado a criar experiências digitais de alto desempenho, acessíveis e limpas. Eu me especializo em transformar problemas complexos em soluções de engenharia elegantes.

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

Deixe seu comentário