Sobes.tech
Junior — Middle

Como é que a goroutine sabe que recebeu um sinal de término através do contexto?

sobes.tech IA

Resposta da IA

A goroutine recebe o sinal de finalização através de um contexto usando um canal, que fornece o objeto context.Context. Normalmente, usa-se o método Done(), que retorna um canal que se fecha quando o contexto é cancelado. A goroutine pode ouvir esse canal em um ciclo ou select e reagir ao seu fechamento, o que indica um sinal de finalização ou cancelamento da operação.

Exemplo:

ctx, cancel := context.WithCancel(context.Background())

go func() {
    select {
    case <-ctx.Done():
        // O contexto foi cancelado, encerrando
        fmt.Println("Goroutine finalizada")
        return
    // outros casos
    }
}()

// mais tarde, chamamos cancel() para sinalizar o encerramento
cancel()