Go · Intermediário · Inglês · Informal
done channel
Channel de sinalização, geralmente chan struct{}, que é fechado para avisar várias goroutines de que devem parar. O receptor desbloqueia assim que ele é fechado.
Onde usar
Padrão comum de cancelamento, anterior ao context. Como close desbloqueia todos os receptores de uma vez, um único close avisa quantas goroutines estiverem escutando.
Em código
done := make(chan struct{})
go func() {
<-done // espera o aviso
fmt.Println("parando")
}()
close(done)
time.Sleep(10 * time.Millisecond)Exemplos
Close the done channel to stop all the workers.
Feche o done channel para parar todos os workers.
We replaced the done channel with a context.
Trocamos o done channel por um context.
Cuidado
Não envie valores para avisar muitas goroutines; cada envio acorda só uma, enquanto close acorda todas.
Sinônimos
quit channel