ExpertiDict

Go · Intermediário · Inglês · Informal

done channel

/dʌn ˈtʃæn.əl/substantivo

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

Veja também

Todos os termos de Go