typestar

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

  1. make(chan T, n) retiene n valores antes de bloquear.
  2. len es lo que hay encolado; cap es el tamaño del búfer.
  3. Un búfer lleno bloquea al emisor; uno vacío, al receptor.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 4 en Canales; paso 5 de 25 en Concurrencia.

← Anterior Siguiente →