Canales con búfer en Go
Un búfer deja que el emisor se adelante, hasta su capacidad.
func buffered() (int, int, []int) {
queue := make(chan int, 3)
queue <- 1
queue <- 2
queued, capacity := len(queue), cap(queue)
close(queue)
var drained []int
for value := range queue { // range se detiene al cerrar
drained = append(drained, value)
}
return queued, capacity, drained
}
Cómo funciona
make(chan T, n)retiene n valores antes de bloquear.lenes lo que hay encolado;capes el tamaño del búfer.- Un búfer lleno bloquea al emisor; uno vacío, al receptor.
Palabras clave y builtins usados aquí
appendcapchancloseforfuncintlenmakerangereturnvar
El intento, en números
- Líneas
- 14
- Caracteres a escribir
- 287
- Tokens
- 74
- Ritmo de tres estrellas
- 100 tpm
Al ritmo de tres estrellas de 100 tokens por minuto, este intento toma unos 44 segundos.
Paso 2 de 4 en Canales; paso 5 de 25 en Concurrencia.