Junior — Middle
Quando exatamente ocorrerá o bloqueio ao usar um canal com tamanho de 100 elementos?
sobes.tech IA
Resposta da IA
No Go, um canal com um tamanho de buffer de 100 elementos significa que pode enviar até 100 valores sem bloquear o remetente.
O bloqueio ocorrerá no momento em que o buffer do canal já contiver 100 elementos, e a goroutine que envia tentar enviar o 101º elemento. Como o buffer está cheio, o envio será bloqueado até que alguém leia pelo menos um elemento do canal.
Exemplo:
ch := make(chan int, 100)
// Preenche o canal
for i := 0; i < 100; i++ {
ch <- i // não bloqueia
}
// A próxima tentativa de envio será bloqueada até que um elemento seja lido
ch <- 101 // bloqueia
Assim, o bloqueio ocorre ao tentar enviar um elemento para um buffer de canal completamente cheio.