Sobes.tech
Junior — Middle

Como é que a gestão de múltiplos threads é feita na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, a gestão de múltiplos threads de execução é feita através de goroutines. Uma goroutine é um thread leve que é iniciado com a palavra-chave go antes de chamar uma função. O scheduler do Go dentro do runtime gere a execução das goroutines, distribuindo-as pelos threads do sistema.

Para sincronizar e trocar dados entre goroutines, frequentemente usam-se canais (channels), que garantem uma transferência segura de dados e evitam condições de corrida.

Exemplo de lançamento de duas goroutines:

package main

import (
    "fmt"
    "time"
)

func say(s string) {
    for i := 0; i < 3; i++ {
        fmt.Println(s)
        time.Sleep(100 * time.Millisecond)
    }
}

func main() {
    go say("world") // inicia uma goroutine
    say("hello")   // é executada no thread principal
}

Neste exemplo, a função say é chamada numa goroutine separada, permitindo executar duas tarefas em paralelo.