Sobes.tech
Junior — Middle

Poderia explicar o que significa lançar e gerir goroutines na linguagem Go?

sobes.tech IA

Resposta da IA

Na linguagem Go, as goroutines são threads de execução leves geridos pelo runtime do Go. Iniciar uma goroutine permite executar uma função ou método em paralelo com o thread principal, sem bloqueá-lo.

Para lançar uma goroutine, usa-se a palavra-chave go antes da chamada da função:

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

func main() {
    go sayHello() // lançamento da goroutine
    // o thread principal continua a trabalhar
    time.Sleep(time.Second) // para que a goroutine tenha tempo de executar
}

O controlo das goroutines inclui sincronização e coordenação do seu trabalho. Para isso, frequentemente usam-se canais (chan), que permitem transmitir dados entre goroutines de forma segura e eficiente.

Exemplo de uso de um canal para esperar que uma goroutine termine:

func worker(done chan bool) {
    fmt.Println("Trabalho da goroutine")
    done <- true // sinal de conclusão
}

func main() {
    done := make(chan bool)
    go worker(done)
    <-done // espera pelo sinal
    fmt.Println("Goroutine concluída")
}

Assim, lançar e controlar goroutines é uma forma de organizar a execução concorrente do código usando threads leves e mecanismos de sincronização.