Go · Intermediário · Inglês · Técnico
unbuffered channel
Channel criado sem capacidade, com make(chan T). Cada envio só completa quando outra goroutine está pronta para receber, então ele sincroniza as duas pontas.
Onde usar
É o padrão quando você quer um ponto de encontro entre goroutines. Enviar e receber na mesma goroutine, sem outra do outro lado, trava o programa em deadlock.
Em código
ch := make(chan int)
ch <- 1 // ninguém recebe
// fatal error: all goroutines
// are asleep - deadlock!Exemplos
An unbuffered channel blocks the sender until someone receives.
Um channel sem buffer bloqueia quem envia até alguém receber.
Sending on an unbuffered channel from main caused a deadlock.
Enviar em um channel sem buffer na main causou um deadlock.
Cuidado
Não confunda com buffered channel de capacidade 1; este ainda aceita um envio sem receptor, o sem buffer não.
Sinônimos
channel sem buffer
Antônimos
buffered channel