Sobes.tech
Junior — Middle

Como são implementadas e gerenciadas as goroutines na linguagem Go?

sobes.tech IA

Resposta da IA

As goroutines em Go são threads leves geridos pelo runtime de Go, não pelo sistema operativo. Permitem escrever código concorrente com recursos mínimos.

Aspectos principais da implementação e gestão de goroutines:

  • Criação: Uma goroutine é iniciada com a palavra-chave go antes de chamar uma função.
  • Agendador: O runtime de Go possui o seu próprio agendador que distribui as goroutines pelos threads do sistema (planeamento M:N).
  • Pilha: Cada goroutine tem uma pilha dinâmica que pode crescer ou diminuir conforme necessário, começando com alguns quilobytes.
  • Comunicação: São utilizados canais para sincronizar e trocar dados entre goroutines.

Exemplo de criação de uma goroutine:

func sayHello() {
    fmt.Println("Olá do goroutine")
}

func main() {
    go sayHello() // inicia a goroutine
    time.Sleep(time.Second) // espera para que a goroutine tenha tempo de executar
}

Assim, as goroutines são uma forma eficiente de executar código em paralelo com custos mínimos.